我有一个大的低值矩阵,例如:
m <- matrix(c(0.000000217, 0.000000021, 0.000000403, 0.000000272,
0.000000209, 0.000000310, 0.000000161, 0.000000243,
0.000000375, 0.000000185, 0.000000298, 0.000000269),
nrow = 3, ncol = 4)
在我的工作中,方差低的列引起了问题。我的实际矩阵有7,000多行。如何删除方差的底部 n 列?我尝试了apply()
的各种迭代,但都没有成功。
答案 0 :(得分:0)
m <- matrix(c(0.000000217, 0.000000021, 0.000000403, 0.000000272,
0.000000209, 0.000000310, 0.000000161, 0.000000243,
0.000000375, 0.000000185, 0.000000298, 0.000000269),
nrow = 3, ncol = 4)
使用apply
和var
获取列差异,使用order
和head
获取顶部或底部 n 。
m[, head(order(apply(m, 2, var), decreasing = TRUE), -n)]
答案 1 :(得分:0)
使用library(data.table)
setDT(test.data)[, mean.BC := mean(y[x %in% c("BC5", "BC6","BC7")]), by = site]
和%in%
which.min