に相当するものはありますが、そうでない場合は==
その結果になりますか?x != NA
x
NA
以下は私が望むことをしますが、それは不格好です:
mapply(identical, vec1, vec2)
に相当するものはありますが、そうでない場合は==
その結果になりますか?x != NA
x
NA
以下は私が望むことをしますが、それは不格好です:
mapply(identical, vec1, vec2)
「==」を%in%に置き換えるだけです。
例:
> df <- data.frame(col1= c("a", "b", NA), col2= 1:3)
> df
col1 col2
1 a 1
2 b 2
3 <NA> 3
> df[df$col1=="a", ]
col1 col2
1 a 1
NA <NA> NA
> df[df$col1%in%"a", ]
col1 col2
1 a 1
> "x"==NA
[1] NA
> "x"%in%NA
[1] FALSE
1 == NA
またはNA
ではなく論理を返します。を呼び出したい場合は、2番目の条件を追加できます。TRUE
FALSE
NA
FALSE
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
2番目の処理ステップを使用して、同等性テストのすべての値をに変換することもできます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
演算子は、多くの==
場合、data.framesのフィルタリングと組み合わせて使用されます。
そのような状況では、とは異なりdplyr::filter
、条件がと評価される行のみを保持します。それは効果的に実装されますが、どこで評価されますか。TRUE
[
==
1 == NA
FALSE
例:
> df <- data.frame(col1= c("a", "b", NA), col2= 1:3)
> df
col1 col2
1 a 1
2 b 2
3 <NA> 3
> dplyr::filter(df, col1=="a")
col1 col2
1 a 1