我正在尝试编写一个函数,其中一个参数是用户提供的列名向量。这些列名将用于指定哪些数据框的列将被粘贴在一起形成一个新的列,以在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)
}