azalea says

R:删除matrix中全是缺失值 (NA)的行或列

我们已经知道,用na.omit()命令可以删除NA。 但是我们希望,只有在某行或某列全是NA时才删除,而na.omit()所做的事是,只要出现NA值,就把所在行全部删除。 例如:

testmatrix <- matrix(nrow=6, ncol=4) testmatrix[2:5,2:3] <- seq(2)

得到testmatrix [,1] [,2] [,3] [,4] [1,] NA NA NA NA [2,] NA 1 1 NA [3,] NA 2 2 NA [4,] NA 1 1 NA [5,] NA 2 2 NA [6,] NA NA NA NA 我们希望得到: testmatrix [,1] [,2] [1,] 1 1 [2,] 2 2 [3,] 1 1 [4,] 2 2 方法是:

tm1<-testmatrix[,-which(apply(testmatrix,2,function(x)all(is.na(x))))] tm2<-tm1[-which(apply(testmatrix,1,function(x)all(is.na(x)))),]

搞定 也可以合并以上2步:

testmatrix[-which(apply(testmatrix,1,function(x)all(is.na(x)))), -which(apply(testmatrix,2,function(x)all(is.na(x))))]

Reference: http://www.mail-archive.com/r-help@stat.math.ethz.ch/msg92261.html

programming R · Tweet Edit