我有一个多价kdb函数,我希望通过从每个参数(从表中获取相同长度的列表)中取一个原子并将参数应用于所述函数来连续应用 .
我觉得这应该很简单,而且我缺少一些基本的东西,但与kdb一样,很难找到解决方案 .
下面的代码片段可以实现我想要的但只适用于顶层(据我所知):
a:(1 2 3); b:(1 2 3); {a[x]*b[x]} each til count a
不确定我完全理解你的问题,但听起来你想要按元素应用一个函数元素?显然,算术函数已在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
适当的参考是:
http://code.kx.com/q/ref/errors/#signal(每个都)
http://code.kx.com/q/ref/unclassified/#apply(申请)
惯用的方法是 x f'y :
x f'y
q)a:1 2 3 q)b:1 2 3 q)a*'b 1 4 9 q)
(这对于算术来说当然是多余的,但它对其他东西很有用)
2 回答
不确定我完全理解你的问题,但听起来你想要按元素应用一个函数元素?显然,算术函数已在KDB中执行此操作,但为了说明起见:
适当的参考是:
http://code.kx.com/q/ref/errors/#signal(每个都)
http://code.kx.com/q/ref/unclassified/#apply(申请)
惯用的方法是
x f'y
:(这对于算术来说当然是多余的,但它对其他东西很有用)