Kdb+/q: 遍历初始化列表
Kdb+/q: Looping over initialised list
假设我创建了一个空 table:
test:([] name:`symbol$(); balance:`int$());
现在让我们用一行填充此列表:
insert[`test;(`John;1001)];
现在,如果我想按如下方式循环 table:
n:0;
k:0;
f:{x%100}
do[count test; k+:f[test.balance[n]]; n+:1]
然后它给了我一个错误,因为它试图通过函数 f
.
使用(评估)空的初始化值
这不起作用有什么特别的原因吗?
我如何确保它有效?
您所做的可能有效,但远非最佳做法。循环和索引不是要走的路。
你要找的本质上是
test:([] name:`symbol$(); balance:`int$());
insert[`test;(`John;1001)];
insert[`test;(`Jane;2002)];
q)select sum f[balance] from test
balance
-------
30.03
假设我创建了一个空 table:
test:([] name:`symbol$(); balance:`int$());
现在让我们用一行填充此列表:
insert[`test;(`John;1001)];
现在,如果我想按如下方式循环 table:
n:0;
k:0;
f:{x%100}
do[count test; k+:f[test.balance[n]]; n+:1]
然后它给了我一个错误,因为它试图通过函数 f
.
这不起作用有什么特别的原因吗?
我如何确保它有效?
您所做的可能有效,但远非最佳做法。循环和索引不是要走的路。
你要找的本质上是
test:([] name:`symbol$(); balance:`int$());
insert[`test;(`John;1001)];
insert[`test;(`Jane;2002)];
q)select sum f[balance] from test
balance
-------
30.03