如果R中的全部为0,如何删除整行

时间:2015-07-21 18:28:26

标签: r

如果我有这样的数据框

4   6
6   0
4   5
0   0
6   5
0   4
4   4

但是要大得多,我可以写什么命令会删除任何完全为0的行,例如我的例子中的第4行。

最后看起来像这样

4   6
6   0
4   5
6   5
0   4
4   4

谢谢!

2 个答案:

答案 0 :(得分:4)

这样的东西?

df[apply(df[, sapply(df, is.numeric)], 1, function(x) !all(x==0)), ]

df[rowSums(abs(df[, sapply(df, is.numeric)])) != 0, ]

示例:

> df <- data.frame(x=c(1, 2, 0), y=c(0, 1, 0), z=letters[1:3])
> df
  x y z
1 1 0 a
2 2 1 b
3 0 0 c

> df[rowSums(abs(df[, sapply(df, is.numeric)])) != 0, ]
  x y z
1 1 0 a
2 2 1 b

答案 1 :(得分:1)

也许这会有所帮助:

df <- df[-which(rowSums(abs(df)) == 0),]
#> df
#  X1 X2
#1  4  0
#2  6  6
#3  6  5
#5  4  4
#6  5  4
#7  0  4

数据

df <- data.frame(matrix(c(4, 6, 6, 0, 4, 5, 0, 0, 6, 5, 0, 4, 4, 4), ncol=2))