使用变量获取 KDB 中元素的范围
Get range of elements in KDB using variables
为什么我不能在 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
有关为什么只有分号不起作用以及为什么我们需要方括号 '()' 的详细解释,请查看我对此 post 的回答:
kdb/q: how to reshape a list into nRows, where nRows is a variable
要了解您的问题,请考虑:
1 2 3 7
这是一个简单的整数列表。现在考虑:
一个 2 3
其中 a
是向量。以上索引为a
。简单。现在假设您想将 2 3
列表作为变量
b:2 3
a b //有效!
您具体询问如何从列表中获取范围,这在 How to get range of elements in a list in KDB?
中有介绍
在该答案中,使用变量创建索引列表并使用结果索引到 a
为什么我不能在 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
有关为什么只有分号不起作用以及为什么我们需要方括号 '()' 的详细解释,请查看我对此 post 的回答:
kdb/q: how to reshape a list into nRows, where nRows is a variable
要了解您的问题,请考虑:
1 2 3 7
这是一个简单的整数列表。现在考虑:
一个 2 3
其中 a
是向量。以上索引为a
。简单。现在假设您想将 2 3
列表作为变量
b:2 3 a b //有效!
您具体询问如何从列表中获取范围,这在 How to get range of elements in a list in KDB?
中有介绍在该答案中,使用变量创建索引列表并使用结果索引到 a