我有一个多价 kdb 函数,我想通过从它的每个参数(它们是从表中获取的相同长度的列表)中取出一个原子并将参数应用于所述函数来连续应用它。
我觉得这应该很容易,但我缺少一些基本的东西,但与 kdb 一样,很难找到解决方案。
下面的代码片段做了我想要的,但只适用于顶层(据我所知):
a:(1 2 3);
b:(1 2 3);
{a[x]*b[x]} each til count a
我有一个多价 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
适当的参考是:
惯用的方法是x f'y
:
q)a:1 2 3
q)b:1 2 3
q)a*'b
1 4 9
q)
(这对于算术当然是多余的,但它对其他事情很有用)