如何在R中仅删除所有值均为NA的行?

3

我有一个数据框,其中只有一些行有全部的 NA。 如何循环遍历并删除所有这些行? 我尝试过 na.omit() 但它不起作用。 在这个例子中,我需要删除第3行和第5行。

x1 <- c("Bob", "Mary","","Jane","")
x2 <- c("Bob","Mary","","Jane","")
x3 <- c("Bob", "Mary","","Jane","")
x4 <- c("Bob","Mary","","Jane","")

df <- data.frame(x1,x2,x3,x4)

df <- df %>% na.omit()

该内容包含零个 NA ... 尽管根据您的描述,@gos 的建议是答案:complete.cases - r2evans
2个回答

8
这里有一个选项;首先你需要定义NA模式。
df[df == ""] <- NA # define NA pattern
df[rowSums(is.na(df)) != ncol(df), ] # result
# Try with x1 <- c("Bob", "Mary","","","") 

3
> df[rowSums(df=="")!=ncol(df), ]
    x1   x2   x3   x4
1  Bob  Bob  Bob  Bob
2 Mary Mary Mary Mary
4 Jane Jane Jane Jane

2
虽然这个答案可能是正确和有用的,但最好还是附上一些解释来说明它如何帮助解决问题。如果将来发生了变化(可能与此无关),导致它停止工作并且用户需要了解它曾经是如何工作的,这将特别有用。 - Erty Seidohl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接