19

に相当するものはありますが、そうでない場合は==その結果になりますか?x != NAxNA

以下は私が望むことをしますが、それは不格好です:

mapply(identical, vec1, vec2)
4

3 に答える 3

16

「==」を%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
于 2018-04-19T05:52:09.133 に答える
12

1 == NAまたはNAではなく論理を返します。を呼び出したい場合は、2番目の条件を追加できます。TRUEFALSENA 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

NA2番目の処理ステップを使用して、同等性テストのすべての値をに変換することもできますFALSE

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

また、その価値のために、と同じようにNA == NA戻ります。NANA != NA

于 2013-01-23T19:38:45.390 に答える
1

演算子は、多くの==場合、data.framesのフィルタリングと組み合わせて使用​​されます。

そのような状況では、とは異なりdplyr::filter、条件がと評価される行のみを保持します。それは効果的に実装されますが、どこで評価されますか。TRUE[==1 == NAFALSE

例:

> 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
于 2021-03-11T15:53:09.377 に答える