为什么我不能在 KDB 的数组范围内使用变量?
test:1 2 3 4 5
此示例不起作用:
pos:3;
test[1 pos]
但这样就可以了
test[1 3]
如您所见,当您使用 test[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
有关为什么只有分号不起作用以及为什么我们需要括号 '()' 的详细说明,请查看我对这篇文章的回答:
要了解您的要求,请考虑:
1 2 3 7
这是一个简单的整数列表。现在考虑:
一个 2 3
a
向量在哪里。上述索引为a
. 简单的。现在说你想将该2 3
列表作为变量
b:2 3 ab //有效!
您特别询问如何从列表中获取范围,这在如何获取 KDB 中列表中的元素范围?
在那个答案中,使用变量来创建索引列表并使用结果来索引a