clip!
语法
clip!(X,Y,Z)
参数
X 是一个向量、矩阵或表。
Y 是一个标量、向量、矩阵或表
Z 是一个标量、向量、矩阵或表
-
当 X 是向量时,Y 和 Z 可以是标量或与 X 等长的向量。
-
当 X 是矩阵时,Y 和 Z 可以是标量,可以是长度等于 X 行数的向量,或与 X 维度相同的矩阵。
-
当 X 是表时,Y 和 Z 可以是标量,可以是长度等于 X 行数的向量,或与 X 维度相同的表。
详情
将 X 中数据在区间 [Y,Z]之外的值裁剪至区间边界,即
-
X 中小于 Y 的值都会被 Y 替换,如果 Y 为空值标量,将不会进行任何操作。
-
X 中大于 Z 的值都会被 Z 替换;如果 Z 为空值标量,将不会进行任何操作。
-
如果 Y 或 Z 是一个向量,只要某个位置包含 NULL,那么该位置 X 替换为 NULL。
-
当 Z 小于 Y 的值时,X 的值替换为 Z。
如果 X 是矩阵或表,则在每列内进行上述计算,最终会修改 X 的值。
注意:当 Y 或 Z 的数据类型与 X 不一致时,可能会有舍入或溢出现象。
例子
x = 1..9
y = 3
z = 7
clip!(x,y,z)
print(x)
// output
[3,3,3,4,5,6,7,7,7]
x = 1..9
y = 3
z = NULL
clip!(x,y,z)
print(x)
// output
[3,3,3,4,5,6,7,8,9]
x = 1..9$3:3
y = [1,3,3,3,,5,6,7,8]$3:3
z = [2,4,5,5,6,7,,6,10]$3:3
clip!(x,y,z)
// output
print(x)
#0 #1 #2
-- -- --
1 4
3 6
3 6 9
x = table(1..3 as x1, 4..6 as x2, 7..9 as x3)
y = table([1.0,3.5,3.0] as y1, [3,,5] as y2, [6,7,8] as y3)
z = table([2,4,5] as z1, [5,6,7] as z2, [,6,10] as z3)
clip!(x,y,z)
print(x)
// output
x1 x2 x3
--- -- --
1.0 4
3.5 6
3.0 6 9
x = [1,2,3]
x.clip!(1.1,2.2)
// output
[1,2,2]