if_else没有按预期返回NA(而是返回false条件)

我已经看到几个问题围绕这个问题跳舞,但似乎没有一个直接解决它。

我在数据框列中有字符数据,有些值为NA. 在if_else()帮助文件例子表明,它会留下NA作为NA,除非与另有规定missing的说法。

但是,在我的情况下,它认为NA它符合false参数标准,并以这种方式返回。这是预期的行为吗?是因为使用字符数据吗?我能看到预期的行为从帮助文件代码整数数据。

我查过str(my_df$test_vector),是字符数据,不是因子数据。

在此先感谢论坛大师。

例子:

> test_vector <- c("1dose", "2dose", "yes", "no", "undecided", NA) # data as it appears in my dataframe
> is.na(test_vector)  # behaves as expected
[1] FALSE FALSE FALSE FALSE FALSE  TRUE 
> if_else(test_vector %in% c("1dose", "2dose", "yes"), "yes", "no")  # does not behave as expected
[1] "yes" "yes" "yes" "no"  "no"  "no"
> if_else(test_vector %in% c("1dose", "2dose", "yes"), "yes", "no", NA_character_)  # also unexpected
[1] "yes" "yes" "yes" "no"  "no"  "no" 

回答

运算符 %in% 针对 NA 值返回 false:

test_vector %in% c("1dose", "2dose", "yes")
[1]  TRUE  TRUE  TRUE FALSE FALSE FALSE

我相信 str_detect 会给你你正在寻找的行为:

> if_else(str_detect(test_vector, c("1dose", "2dose", "yes")),"yes","no")
[1] "yes" "yes" "yes" "no"  "no"  NA


以上是if_else没有按预期返回NA(而是返回false条件)的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>