【发布时间】:2016-06-14 02:48:54
【问题描述】:
我是 R 新手,我正在研究处理一组数据的函数。
我有一个 20 x 5 的值矩阵,我在其中添加了一个介于 -1 到 1 之间的随机数。如何确保矩阵中的所有值以高效且快速的方式保持在 0-10 之间(无需使用循环一次检查一个值)。
这些是规则:
- 如果值大于 10,则将其更改为 10
- 如果值小于 那是0,把它改成0
感谢任何帮助。谢谢!
【问题讨论】:
我是 R 新手,我正在研究处理一组数据的函数。
我有一个 20 x 5 的值矩阵,我在其中添加了一个介于 -1 到 1 之间的随机数。如何确保矩阵中的所有值以高效且快速的方式保持在 0-10 之间(无需使用循环一次检查一个值)。
这些是规则:
感谢任何帮助。谢谢!
【问题讨论】:
类似
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
【讨论】:
matrix(sample(c(-1,1),size=100,replace=TRUE),nrow=20) 可能更直接一些
library(dplyr) mRaw <- runif(100, 0, 10) %>% as.integer %>% matrix(nrow = 20, ncol = 5) m1 <- matrix(sample(c(-1,1),size=100,replace=TRUE),nrow=20) mAdded <- m1 + mRaw mAdded[] <- pmax(0,pmin(10,mAdded))
pandas-specific ? (我想我更喜欢x %>% fun1() %>% fun2() 到x.pipe(fun1).pipe(fun2) 无论如何......)