我在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
怎么做?
答案 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