eachAt(@)
语法
X@index
eachAt(X, index)
参数
-
X
可以是一个标量、向量(常规向量/元组/数组向量)、矩阵、表、字典、数据对、单目函数。 -
index
可以是一个布尔表达式/布尔值、向量(常规向量/元组/数组向量)、数据对
详情
当 index 是布尔表达式时, 返回 X 中满足于 index 为 True 的元素;否则返回以 index 为索引的元素。若 X 是函数,则 index 将作为函数的参数。
eachAt 和 at 用法类似,其不同点在于:
(1) 当 index 是元组时:
-
at 会将 index 的元素作为 X 每个维度的索引。例如:若 X 是一个向量组成的元组,则 index = (0, 1) 则返回 X 的第 1 个元素中下标为 1 的元素值。
-
eachAt,则将 index 中的每个元素都作为一维索引,返回 X 中对应 index 的元素。例如:若 X 是一个向量组成的元组,则 index = (0, 1) 则返回 X 的第 1 个元素和第 2 个元素。
(2) 当 X 是函数时:
-
at 既支持单目函数又支持多目函数。
-
eachAt 仅支持单目函数。
对不同数据形式查找的支持性见下表。
X/index | 条件表达式/布尔值 | 标量 | 常规向量 | 数组向量 | 元组 | 数据对 |
---|---|---|---|---|---|---|
标量 | √ | √ | √ | × | √ | √ |
常规向量 | √ | √ | √ | √ | √ | √ |
元组 | √ | √ | √ | × | √ | √ |
数组向量 | √ | √ | √ | × | √ | √ |
矩阵 | √ | √ | √ | × | √ | √ |
表 | √ | √ | √ | × | √ | √ |
字典 | × | √ | √ | × | √ | × |
数据对 | √ | √ | √ | × | √ | √ |
单目函数 | √ | √ | √ | √ | √ | √ |
例子
v = 3.1 2.2 4.5 5.9 7.1 2.9
eachAt(v, v > 3)
输出返回:[3.1,4.5,5.9,7.1]
v @ 1:3
输出返回:[2.2,4.5]
v @ (:4)
输出返回:[3.1,2.2,4.5,5.9]
v @ (3:)
输出返回:[5.9,7.1,2.9]
// 当 index 是索引时 eachAt 和 at 的区别
tp = [2.3 2.1 2.2, 3.1 2.9 2.8, 5.7 6.9]
tp @ [1 2 3, 0 1 2]
输出返回:(([3.1,2.9,2.8],[5.7,6.9],),([2.3,2.1,2.2],[3.1,2.9,2.8],[5.7,6.9]))
tp at [1 2 3, 0 1 2]
输出返回:([3.1,2.9,2.8],[5.7,6.9,],)
sum @ 6 2 3 NULL 2 -3
输出返回:10
// 由于 seq(..) 优先级比 @ 低,所以此处必须添加括号
sum @ (1..10)
输出返回:55
相关函数:at