我是R的新手,我正致力于处理一组数据的功能。
我有一个20乘5的值矩阵,我在-1到1之间添加一个随机数。如何确保矩阵中的所有值以高效和快速的方式保持在0-10之间(没有使用循环一次检查一个值。)
这些是规则:
感谢任何帮助。谢谢!
答案 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