2013-01-23 117 views
7

是否有等效的==但結果是x != NA如果x不是NAR等於忽略NA

下面我想要做什麼,但它是笨重:

mapply(identical, vec1, vec2) 

回答

5

1 == NA返回邏輯NA而非TRUEFALSE。如果你想打電話NAFALSE,你可以添加第二個條件:

set.seed(1) 
x <- 1:10 
x[4] <- NA 
y <- sample(1:10, 10) 

x <= y 
# [1] TRUE TRUE TRUE NA FALSE TRUE TRUE FALSE TRUE FALSE 

x <= y & !is.na(x) 
# [1] TRUE TRUE TRUE FALSE FALSE TRUE TRUE FALSE TRUE FALSE 

你也可以使用第二個加工步驟將所有NA值從平等的測試轉換爲FALSE

foo <- x <= y 
foo[is.na(foo)] <- FALSE 
foo 
# [1] TRUE TRUE TRUE FALSE FALSE TRUE TRUE FALSE TRUE FALSE 

此外,對於什麼它的價值,NA == NA回報NA一樣NA != NA

+0

這是一種令人討厭的必須做AND,但我想如果沒有更好的辦法。 – Xodarap

+0

如何?你會建議什麼?出於非常重要的原因,「NA」以特殊方式運行(「NULL」也是如此)! – Justin

+0

我意識到'=='的行爲是有價值的,但我希望有一個運算符'==''這表現了我想要的。 (R不允許用戶定義的操作符,對不對?) – Xodarap