【发布时间】:2021-05-07 21:44:20
【问题描述】:
谁能解释一下以下代码的奇怪输出? 我有一个带有一些 NA 的数据集。我想使用 C 列中的值(如果存在), 填写 B 列中的 NA。使用时,coalesce 功能正常工作 没有 ifelse,但在 ifelse 函数中使用时,结果很奇怪。
library(tidyverse)
x <- tibble(A = 1:3,
B = c("first", NA, "third"),
C = c("first", "second", NA))
x %>%
mutate(B = coalesce(B, C))
#> # A tibble: 3 x 3
#> A B C
#> <int> <chr> <chr>
#> 1 1 first first
#> 2 2 second second
#> 3 3 third <NA>
x %>%
mutate(B = ifelse(has_name(., "C"), coalesce(B, C), B))
#> # A tibble: 3 x 3
#> A B C
#> <int> <chr> <chr>
#> 1 1 first first
#> 2 2 first second
#> 3 3 first <NA>
我用下面的代码解决了这个问题:
if(has_name(x, "C")){
x %>%
mutate(B = coalesce(B, C))
}
#> # A tibble: 3 x 3
#> A B C
#> <int> <chr> <chr>
#> 1 1 first first
#> 2 2 second second
#> 3 3 third <NA>
但我想在 mutate 函数中使用 if 语句。任何澄清都非常感谢。
【问题讨论】:
标签: r