使用paste0突变列

时间:2019-12-15 17:01:04

标签: r dplyr

我正在寻找动态命名列。我需要用新名称复制变量。为什么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)))

1 个答案:

答案 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 = ", "))

paste0paste本身仅转换为character类。也许,我们可能需要使用paste

中的参数