Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 有条件地从矩阵中删除列_R - Fatal编程技术网

R 有条件地从矩阵中删除列

R 有条件地从矩阵中删除列,r,R,我有一个矩阵: set.seed(23) dt.data <- unname(as.matrix(data.frame(rnorm(5,30,2),rnorm(5,-3,1), replicate(3,rnorm(5,5,1))))) dt.data # [,1] [,2] [,3] [,4] [,5] #[1,] 30.38642 -1.892510 5.218288 5.308137 5.835391 #[2

我有一个矩阵:

set.seed(23)
dt.data <- unname(as.matrix(data.frame(rnorm(5,30,2),rnorm(5,-3,1),
              replicate(3,rnorm(5,5,1)))))
dt.data
#         [,1]      [,2]     [,3]     [,4]     [,5]
#[1,] 30.38642 -1.892510 5.218288 5.308137 5.835391
#[2,] 29.13064 -3.278086 3.953465 4.479822 4.433985
#[3,] 31.82653 -1.980795 4.711311 4.557686 5.788419
#[4,] 33.58678 -2.954563 5.481550 4.400687 3.834071
#[5,] 31.99321 -1.424220 3.783624 6.294578 4.469180

有什么建议吗?

colMeans
应该这样做:

m <- colMeans(dt.data, na.rm=TRUE)
dt.data[, !(m > 25 | m < 0)]
m25 | m<0)]

真管用!apply方法也会起作用吗?或者说这是注定的?它不一定是“注定的”。你可以这样做,但是
colMeans
是做你正在做的事情的一种非常标准的方式,而且fast@user3837409-应用版本也更复杂:
dt.data[,apply(dt.data,2,函数(x)!(平均值(x)>25 |平均值(x)<0))
希望您不介意,我用一个可复制的矩阵替换了您的示例,以便将来的读者可以测试代码并在家里玩。
Error in dt.data[, -x] : only 0's may be mixed with negative subscripts
m <- colMeans(dt.data, na.rm=TRUE)
dt.data[, !(m > 25 | m < 0)]