我正在尝试编写一个函数,该函数将用户的列名向量作为其参数之一。列名将用于指定数据框的哪些列将被粘贴在一起以在 dplyr::mutate 中形成一个新列。我试图先折叠参数向量的元素,然后在 mutate 中使用折叠的字符串 - 这是错误的。请参阅下面的最新尝试。我进行了其他尝试,但我不了解 dplyr 中的新 quo、enquo、UQ、!!!、!! 等等。有人可以展示我需要做什么吗?
df <- data.frame(.yr = c("2000", "2001", "2002"), .mo = c("12", "01", "02"), .other = rnorm(3))
cols <- colnames(df)[1:2]
do_want <- df %>%
mutate(new = paste(.yr, .mo, sep = "-"))
my_func <- function(dat, vars){
.vars <- paste(vars, collapse = ",")
result <- dat %>%
mutate(new = paste(.vars, sep = "-" ))
return(result)
}
my_func(dat = df, vars = cols)
编辑:这是我尝试使用 quo 和 !! 在函数定义中。结果是一列重复的字符串“.yr,.mo”
my_func <- function(dat, vars){
.vars <- quo(paste(vars, collapse = ","))
result <- dat %>%
mutate(new = paste(!!.vars, sep = "-" ))
return(result)
}