2013-02-06 62 views
4

如果條件向量包含NA,是否有辦法使用條件下標? 假設我有一個data.frame這樣如何處理包含NAs的條件data.frame下標?

dframe <- data.frame(a=c(1,32,4,5,8),b=c(1,2,3,4,5),d=c(NA,5,5,10,9)) 
dframe[dframe$d > 9,"a"] <- NA 

如果不是對NA在DFRAME $ d這將是直線前進。我已經看到%in%類似here的語法來避開NAs,但不知道如何管理它的條件。 我可以看到,這是一個普遍的問題,因爲我不太確定我是否想在條件或其他方面獲得缺失值的NA。 但我也有興趣瞭解人們如何處理這種情況。

在我的具體情況中,當NA在病情中被視爲FALSE時,將會很有幫助。

回答

5

替代你可以只限制你的索引,以非NA值

dframe[dframe$d > 9 & !is.na(dframe$d),"a"] <- NA 
+2

在R Inferno中找到了一個更緊湊的選擇:'dframe [其中(dframe $ d> 9),「a」] < - NA'。 +1,acc。 –

5

你很近。你有條件和%in%。只是不是鏈接。實際上它很簡單。只要使用%in%TRUE它會給後面的所有其他值,其中如NAFALSE

dframe[(dframe$d > 9) %in% TRUE, "a"] <- NA 
+0

哇,其實我沒有機會找到。即使我接近。 +1,儘管我在這裏與kith一起去,因此對我來說更容易記住。 –

相關問題