我正在寻找动态命名列。我需要用新名称复制变量。为什么new_sepal_length_2变量与new_sepal_length不一样?我该如何解决?
new_var = 'Sepal.Length'
iris %>% mutate(new_sepal_length = Sepal.Length,
new_sepal_length_2 = noquote(paste0(new_var)))
答案 0 :(得分:1)
我们可以将其转换为符号(sym
)并求值(!!
)
library(dplyr)
library(stringr)
iris %>%
mutate(new_sepal_length = str_c(!!rlang::sym(new_var), collapse=", "))
或者另一个选择是利用mutate_at
,它可以在vars
中使用字符串
iris %>%
mutate_at(vars(new_var), list(new= ~ str_c(., collapse=", ")))
或使用paste
iris %>%
mutate(new_sepal_length = paste(!!rlang::sym(new_var), collapse = ", "))
paste0
或paste
本身仅转换为character
类。也许,我们可能需要使用paste