1

我有一个多价 kdb 函数,我想通过从它的每个参数(它们是从表中获取的相同长度的列表)中取出一个原子并将参数应用于所述函数来连续应用它。

我觉得这应该很容易,但我缺少一些基本的东西,但与 kdb 一样,很难找到解决方案。

下面的代码片段做了我想要的,但只适用于顶层(据我所知):

a:(1 2 3);
b:(1 2 3);
{a[x]*b[x]} each til count a
4

2 回答 2

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

适当的参考是:

http://code.kx.com/q/ref/errors/#signal(两者都有)

http://code.kx.com/q/ref/unclassified/#apply(申请)

于 2013-10-29T17:18:49.767 回答
0

惯用的方法是x f'y

q)a:1 2 3
q)b:1 2 3
q)a*'b
1 4 9
q)

(这对于算术当然是多余的,但它对其他事情很有用)

于 2014-04-30T22:57:02.460 回答