小编ryo*_*oto的帖子

为什么在 R 中只有 `case_when` 给出不同的结果?

dplyr::case_when当我使用而不是if参考本文时,我注意到下面的这种行为。如果第二个分支的输出是显式字符串,则它会按预期工作,但如果x指定了其本身,则结果会发生变化。

为什么只case_when给出不同的结果?

x <- character(0)

dplyr::case_when(rlang::is_empty(x) ~ "Empty", !rlang::is_empty(x) ~ "Not empty")
#> [1] "Empty"
dplyr::case_when(rlang::is_empty(x) ~ "Empty", !rlang::is_empty(x) ~ x)
#> character(0)

if (rlang::is_empty(x)) "Empty" else if (!rlang::is_empty(x)) "Not empty"
#> [1] "Empty"
if (rlang::is_empty(x)) "Empty" else if (!rlang::is_empty(x)) x
#> [1] "Empty"

ifelse(rlang::is_empty(x), "Empty", "Not empty")
#> [1] "Empty"
ifelse(rlang::is_empty(x), "Empty", x)
#> [1] "Empty"
Run Code Online (Sandbox Code Playgroud)

由reprex 包于 2022 年 8 月 16 日创建(v2.0.1)

r dplyr rlang

14
推荐指数
1
解决办法
703
查看次数

标签 统计

dplyr ×1

r ×1

rlang ×1