确保矩阵中的值在设定范围之间?

时间:2016-06-14 02:48:55

标签: r matrix

我是R的新手,我正致力于处理一组数据的功能。

我有一个20乘5的值矩阵,我在-1到1之间添加一个随机数。如何确保矩阵中的所有值以高效和快速的方式保持在0-10之间(没有使用循环一次检查一个值。)

这些是规则:

  • 如果值大于10,请将其更改为10
  • 如果值较小 那个0,把它改成0

感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:5)

这样的东西
m[] <- pmax(0,pmin(10,m))

左侧的m[](而不是m)确保矩阵保持其结构。

这是一个(可能是不必要的)例子:

lwr <- 0; upr <- 10
set.seed(101)
mRaw <- matrix(runif(100, lwr, upr), nrow=20) 
m1 <- sample(c(-1,1),size=100,replace=TRUE)
mAdded <- m1 + mRaw

现在钳:

mAdded[] <- pmax(lwr,pmin(upr,mAdded))
str(mAdded)
## still a matrix: num [1:20, 1:5] 2.72 0 6.1 7.58 3.5 ...
range(mAdded)  ## 0 10