我有一个多价kdb函数,我希望通过从每个参数(从表中获取相同长度的列表)中取一个原子并将参数应用于所述函数来连续应用。
我觉得这应该很容易,而且我遗漏了一些基本的东西,但与kdb一样,很难找到解决方案。
下面的代码片段符合我的要求但只适用于顶层(据我所知):
a:(1 2 3);
b:(1 2 3);
{a[x]*b[x]} each til count a
答案 0 :(得分:2)
不确定我完全理解你的问题,但听起来你想要按元素应用函数元素?显然,算术函数已在KDB +中执行此操作,但为了说明起见:
q)a
8 1 9 5 4 6 6 1 8 5
q)b
4 9 2 7 0 1 9 2 1 8
q)f:{[x;y] x*y}
q)a,'b
8 4
1 9
9 2
5 7
4 0
6 1
6 9
1 2
8 1
5 8
q)f .' a,'b
32 9 18 35 0 6 54 2 8 40
适当的参考资料是:
答案 1 :(得分:0)
这样做的惯用方法是x f'y
:
q)a:1 2 3
q)b:1 2 3
q)a*'b
1 4 9
q)
(这对算术来说当然是多余的,但它对其他事情很有用)