为什么我不能在KDB中使用变量内部数组?
test:1 2 3 4 5
此示例无效:
pos:3;
test[1 pos]
但这样可以正常使用
test[1 3]
答案 0 :(得分:1)
如您所见,当您使用测试[1 3]时,(1 3)是一个列表。因此,矢量变量需要一个列表。
q) list1:1 3
q) test[list1]
所以你必须使用:
q)n:3
q)list1:(1;n)
q)test[list1]
q)test[(1;n)] / alternate way
有关为什么只有分号不起作用以及为什么我们需要括号'()'的详细说明,请查看我对这篇文章的回答:
kdb/q: how to reshape a list into nRows, where nRows is a variable
答案 1 :(得分:1)
要了解您的要求,请考虑:
1 2 3 7
这是一个简单的整数列表。现在考虑:
a 2 3
a
是一个向量。以上索引为a
。简单。现在说你希望将2 3
列表作为变量
b:2 3 a b //有效!
您具体询问如何从列表中获取范围,How to get range of elements in a list in KDB?
在该答案中,使用变量创建索引列表并使用结果索引到a