删除差异最小的列

时间:2019-08-02 16:58:51

标签: r

我有一个大的低值矩阵,例如:

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()的各种迭代,但都没有成功。

2 个答案:

答案 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)

使用applyvar获取列差异,使用orderhead获取顶部或底部 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