有没有办法在合并函数中使用向量?

Mos*_*ses 3 r dplyr

我想在 R 中将许多变量合并在一起。我已将它们提取到一个向量中,以便在合并函数中使用它们。在函数中键入它们中的每一个有点乏味。有办法吗?

library(dplyr)

set.seed(123)

df <- data.frame(
  var1 = sample(c(NA, 1, 3), 10, replace = T),
  var2 = sample(c(NA, 1, 3), 10, replace = T),
  var3 = sample(c(NA, 1, 3), 10, replace = T),
  var4 = sample(c(NA, 1, 3), 10, replace = T),
  age = floor(rnorm(10, 15, 2)),
  gender = factor(round(runif(10, 1, 2)),
              labels = c("Male", "Female"))
)

# Desired variables

myvars <- df %>% select(contains("var")) %>% names()


df_new <- df %>%
  mutate(finalvar = coalesce(myvars))

Run Code Online (Sandbox Code Playgroud)

U10*_*ard 5

评估并!!!解压rlang::syms

df %>%
   mutate(finalvar = coalesce(!!! rlang::syms(myvars)))
Run Code Online (Sandbox Code Playgroud)

或者直接附上rlang

library(rlang)
df %>%
   mutate(finalvar = coalesce(!!! syms(myvars)))
Run Code Online (Sandbox Code Playgroud)

两者输出:

   var1 var2 var3 var4 age gender finalvar
1     3    1   NA   NA  14 Female        3
2     3    1   NA    3  17 Female        3
3     3   NA    3    3  14   Male        3
4     1    1    1   NA  12 Female        1
5     3    3    3    3  13 Female        3
6     1   NA    1    1  16 Female        1
7     1    3   NA   NA  14   Male        1
8     1    3    1    3  12   Male        1
9     3   NA    3   NA  13   Male        3
10   NA   NA    1   NA  14   Male        1
Run Code Online (Sandbox Code Playgroud)