可能重复:
删除R中数据文件的空行
如何从矩阵或数据框中删除行,其中行中的所有元素都是NA?
所以要从中得到:
[,1] [,2] [,3]
[1,] 1 6 11
[2,] NA NA NA
[3,] 3 8 13
[4,] 4 NA NA
[5,] 5 10 NA
Run Code Online (Sandbox Code Playgroud)
对此:
[,1] [,2] [,3]
[1,] 1 6 11
[2,] 3 8 13
[3,] 4 NA NA
[4,] 5 10 NA
Run Code Online (Sandbox Code Playgroud)
因为na.omit的问题是它删除了任何 NAs的行,所以会给我这个:
[,1] [,2] [,3]
[1,] 1 6 11
[2,] 3 8 13
Run Code Online (Sandbox Code Playgroud)
到目前为止我能做的最好的是使用apply()函数:
> x[apply(x, 1, function(y) !all(is.na(y))),]
[,1] [,2] [,3]
[1,] 1 6 11
[2,] 3 8 13
[3,] 4 NA NA
[4,] 5 10 NA
Run Code Online (Sandbox Code Playgroud)
但这看起来很复杂(有什么比我想念的更简单吗?)....
谢谢.
42-*_*42- 48
使用rowSums()的解决方案通常优于apply()的解决方案:
m <- structure(c( 1, NA, 3, 4, 5,
6, NA, 8, NA, 10,
11, NA, 13, NA, NA),
.Dim = c(5L, 3L))
m[rowSums(is.na(m)) != ncol(m), ]
[,1] [,2] [,3]
[1,] 1 6 11
[2,] 3 8 13
[3,] 4 NA NA
[4,] 5 10 NA
Run Code Online (Sandbox Code Playgroud)
Dir*_*tel 40
扫描跨行的测试 all(is.na()),并删除true.这样的事情(未经测试,因为您没有提供生成数据的代码 - dput()是您的朋友):
R> ind <- apply(X, 1, function(x) all(is.na(x)))
R> X <- X[ !ind, ]
Run Code Online (Sandbox Code Playgroud)