是否有等价的==
但结果是x != NA
ifx
不是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
而不是TRUE
or 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
值从相等测试转换为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
,这与[
. 这有效地实现==
了但 where评估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