2016-02-18 30 views
1
x <- data.frame("va1" =sample(1:5), "var2" = sample(6:10), "var3"=sample(11:15)) 

上面一行将创建一个三列,每列有五行。R用NA简单子设置

x <- x[sample(1:5),]; x$var3[c(1,3)]=NA 

使用上面的代码,我随机所有三列的数量,并添加一些NA在列VAR3

x[(x$var3==NA),] 

使用此代码我期待得到所有的值,其中列VAR3 = NA相反,我得到了所有NA的五行三列。谁能告诉我我在这里做错了什么?

回答

0

你想用

x[is.na(x$var3), ] 
# va1 var2 var3 
# 2 5 10 NA 
# 1 1 6 NA 

因为NA值是 “特殊”。这同样适用于NaN,而不是有限的值;见?is.finite,?is.infinite, ?is.nan

+0

谢谢朱利叶斯。这有助于 – XXavier

+0

@XXavier,没问题。欢迎来到SO;我建议你检查http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – Julius

0

我想你想使用

x[(x$var3 %in% NA),] 

这个两个分钟的视频解释%==和%之间的差别真的很好 https://www.youtube.com/watch?v=hx4A4LUgzQc

古德勒克

+0

你也看过其他的答案吗?这有什么不同/更好? –

+0

使用%in%运算符与使用is.na()完全不同 - 两种工作 - 显然,根据您的应用程序了解这两个选项会很有帮助。希望%和==之间的差异有助于解释为什么他/她的方法不起作用。 – MatthewR