eachRight
语法
eachRight(func, X, Y, [consistent=false])
或
func:R(X, Y)
(表示 consistent 为 false)
或
func:RC(X, Y)
(表示 consistent 为 true)
或
X <operator>:R Y
(表示 consistent 为 false)
或
X <operator>:RC Y
(表示 consistent 为 true)
参数
func 是一个二元函数。
X 和 Y 可以是向量,矩阵、表、数组向量或字典。
consistent 布尔值,默认 false,表示每个子任务输出的数据类型由实际计算结果决定。否则,每个子任务输出的数据类型将与第一个子任务输出的数据类型保持一致。 注意,若子任务输出的数据形式不一致,只能指定 consistent = false,否则会报错。
详情
把 func 应用到 Y 的每个元素上,即依次执行 func(X,Y(i))。
-
对于向量,Y(i) 为每个元素
-
对于矩阵,Y(i) 为每一列
-
对于表,Y(i) 为每一行
-
对于数组向量,Y(i) 为每一行
-
对于字典,Y(i) 为字典的每一个 value
如果 func 支持向量操作,并且输入数据是一个向量,为性能考虑,应直接使用向量函数或运算符,不要使用 eachRight。
例子
eachRight 作用于两个向量:
x = 4 3 2 1
y = 3 0 6;
eachRight(add, x, y);
3 | 0 | 6 |
---|---|---|
7 | 4 | 10 |
6 | 3 | 9 |
5 | 2 | 8 |
4 | 1 | 7 |
x pow :R y;
3 | 0 | 6 |
---|---|---|
64 | 1 | 4096 |
27 | 1 | 729 |
8 | 1 | 64 |
1 | 1 | 1 |
eachRight 作用于一个矩阵以及一个向量:
x=1..6$2:3;
x;
col1 | col2 | col3 |
---|---|---|
1 | 3 | 5 |
2 | 4 | 6 |
1 1 ** :R x;
# output
[3,7,11]
eachRight 作用于两个矩阵:
y=6..1$3:2;
y;
col1 | col2 |
---|---|
6 | 3 |
5 | 2 |
4 | 1 |
eachRight(**, x, y);
# output
(#0
--
41
56
,#0
--
14
20
)
eachRight 作用于一个字典和一个向量:
d=dict(`a`b`c, [[1, 2, 3],[4, 5, 6], [7, 8, 9]])
eachRight(add,10 20 30,d)
# output
a->[11,22,33]
b->[14,25,36]
c->[17,28,39]