将多个向量应用于函数

apply multiple vector to function

我有一个简单的函数 returns a table:

F[("A";"B");(1,-1)]

我想应用这个传递向量作为输入的函数:

a:((`A;`B);(`B;`C);(`C;`D))
b:((1;-1);(1;-1);(1;-1))

我试过:

F each a,b
F each a cross b

但这不起作用或组合向量而不是将 2 个组件分开。此外,当我让它工作时,我如何行绑定 tables 的结果列表?我来自 python 背景。

你需要使用 ' each-both :

q)F:{ ([] enlist x; enlist y)}    /if F is simply creating a table 

q)F[("A";"B");(1,-1)]
x    y
---------
"AB" 1 -1

q)a:((`A;`B);(`B;`C);(`C;`D))
q)b:((1;-1);(1;-1);(1;-1))

q)F'[a;b]   /each-both
+`x`y!(,`A`B;,1 -1)
+`x`y!(,`B`C;,1 -1)
+`x`y!(,`C`D;,1 -1)

raze 会将其格式化为 table(我认为行绑定意味着将 table 附加在一起)

q)raze F'[a;b]
x   y
--------
A B 1 -1
B C 1 -1
C D 1 -1