2016-02-18 63 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