clip!

语法

clip!(X,Y,Z)

参数

X 是一个向量、矩阵或表。

Y 是一个标量、向量、矩阵或表

Z 是一个标量、向量、矩阵或表

  • X 是向量时,YZ 可以是标量或与 X 等长的向量。
  • X 是矩阵时,YZ 可以是标量,可以是长度等于 X 行数的向量,或与 X 维度相同的矩阵。
  • X 是表时,YZ 可以是标量,可以是长度等于 X 行数的向量,或与 X 维度相同的表。

详情

X 中数据在区间 [Y,Z]之外的值裁剪至区间边界,即

  • X 中小于 Y 的值都会被 Y 替换,如果 Y 为空值标量,将不会进行任何操作。
  • X 中大于 Z 的值都会被 Z 替换;如果 Z 为空值标量,将不会进行任何操作。
  • 如果 YZ 是一个向量,只要某个位置包含 NULL,那么该位置 X 替换为 NULL。
  • Z 小于 Y 的值时,X 的值替换为 Z

如果 X 是矩阵或表,则在每列内进行上述计算,最终会修改 X 的值。

注意:当 YZ 的数据类型与 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]