取消所有值相同的列

时间:2017-12-12 09:14:46

标签: r apply

我在R中有一个大矩阵,由下面的代表:

A     B    C
0.01  0.9  0.1
0.02  0.7  0.1
0.9   0.8  0.1
0.003 0.08 0.1

我想要使所有具有相同值的列(例如C列)无效,以便它变为:

A     B    C
0.01  0.9  NA
0.02  0.7  NA
0.9   0.8  NA
0.003 0.08 NA

怎么做?

3 个答案:

答案 0 :(得分:2)

如果您的矩阵被称为m1,那么具有所有相同值的列将具有零方差,因此我们可以使用它,即

m1[,apply(m1, 2, var) == 0] <- NA

答案 1 :(得分:2)

a <- matrix(c(0.01, 0.02, 0.09, 0.003, 0.9, 0.7, 0.8, 0.08, 0.1, 0.1, 0.1, 0.1), 4, 3)

以下是a是数字还是其他

的工作原理
a[, apply(a, 2, function(x) length(unique(x))== 1)] <- NA

如果a的值是通过某种计算得出的,那么this线程可能会有用。

答案 2 :(得分:0)

尝试此向量化(说m是你的矩阵):

m[,(colSums(m)/m[1,])==nrow(m)] <- NA