2013-01-23 5 views
7

==の同等物がありますが、の場合はxNAではありませんか?R NAsを無視して同等である

次は、私が欲しいものを行いますが、それは不格好です:

mapply(identical, vec1, vec2) 

答えて

5

むしろTRUEまたはFALSEより論理NAを返し1 == NA。あなたがNAFALSEを呼び出したい場合は、第2の条件を追加することができます。

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 

はまたFALSEにあなたの平等のテストからすべてのNA値を変換する第2の処理ステップを使用することができます。また

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

、何のためにその価値は、NA == NA戻りNANA != NAがそうであるように。

+0

ANDをやらなければならないのは面倒ですが、もっと良い方法がないかと思います。 – Xodarap

+0

どうですか?代わりにあなたは何を提案しますか?非常に重要な理由から、 'NA'は特別なやり方で動作します(' NULL'も同様です)! – Justin

+0

'=='の振る舞いは貴重ですが、私が望む振る舞いをする演算子 '== ''があったらいいと思います。 (Rはユーザ定義の演算子を許可していません) – Xodarap

関連する問題