我把自己和dplyr和if_any
搞混了。我正试着沿着这些路线执行一些事情:
如果列存在,则计算表达式。如果不存在,则返回FALSE
。
所以这三个场景抓住了我的想法:
library(dplyr)
dat <- data.frame(x = 1)
## GOOD: if foo_col is NA then return FALSE
dat %>%
mutate(foo_col = NA_character_) %>%
mutate(present = if_any(matches("foo_col"), ~ !is.na(.x)))
#> x foo_col present
#> 1 1 <NA> FALSE
## GOOD: if foo_col is not NA return FALSE
dat %>%
mutate(foo_col = "value") %>%
mutate(present = if_any(matches("foo_col"), ~ !is.na(.x)))
#> x foo_col present
#> 1 1 value TRUE
## NOT GOOD: if foo_col is absent, return TRUE? Want this to be FALSE.
dat %>%
mutate(present = if_any(matches("foo_col"), ~ !is.na(.x)))
#> x present
#> 1 1 TRUE
那么,谁能提出一种方法来确定如何检查is.na
条件以及列是否确实存在?
1条答案
按热度按时间iqjalb3h1#
如果我们需要最后一个为
FALSE
,同时为其他两种情况给出TRUE/FALSE或者就像@boshek在评论中提到的,
rlang::is_empty
应该也能正常工作。对于其他情况
注:但本测试无法区分
FALSE
和NA
用例,并且未发现FALSE
列