q - 在压缩时应用任意功能

时间:2017-10-16 15:54:15

标签: kdb q-lang

在q中,二元拉链操作由'完成。即。

l1:("a1";"a2")
l2:("b1";"b2")
(l1,'l2)~("a1b1";"a2b2")

我将此'解析为二元运算符'[g;l2],其中g是将列表上的某些二元函数投影到一元函数上,例如g:,[l1;]

因此,如果我们想在压缩操作期间执行除,之外的任何其他地图,我将重新定义g

但是,'[g;l2]并未向我提供预期的列表输出,而是返回func

问题是:如何在压缩操作期间应用任意地图?例如。我如何在示例l1 f' l2中执行f:,之类的操作,但一般f某些二元运算符列出项目?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

  

如何在压缩操作期间应用任意地图?

像这样:

q)f:{x+y}
q)f'[10*x;x:til 5]
0 11 22 33 44

如果你喜欢中缀符号,你也可以

q)(10*x) f' til 5
0 11 22 33 44

请注意,'[g;l1]composition。如果要创建投影,请执行

q)g:,'[l1;]
q)g l2
"a1b1"
"a2b2"