2015-07-21 59 views
1

如果我有像這樣如何刪除一整行,如果它是全0 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 

謝謝!

回答

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 
+0

沒有工作......我不想刪除所有零,只有完全爲0的行 – user4999605

+0

感謝您的糾正,但它仍然無法正常工作。我喜歡第二種選擇,但由於我的一些列是數字,有些是字符矢量,它也不能工作:( – user4999605

+4

如果是這樣,請提供一個示例數據,最好使用'dput(head(df))'。 – zero323

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)) 
相關問題