我正在尝试创建一个将列名列表传递给函数的dplyr
函数。如果列名列表以...
表格形式给出,我知道如何执行此操作,如tidyeval
文档中所述:
df <- tibble(
g1 = c(1, 1, 2, 2, 2),
g2 = c(1, 2, 1, 2, 1),
a = sample(5),
b = sample(5)
)
my_summarise <- function(df, ...) {
group_var <- quos(...)
df %>%
group_by(!!!group_var) %>%
summarise(a = mean(a))
}
my_summarise(df, g1, g2)
但是如果我想将列名作为函数的参数列出,上述解决方案将不起作用(当然):
my_summarise <- function(df, group_var, sum_var) {
group_var <- quos(group_var) # nor enquo(group_var)
sum_var <- enquo(sum_var)
df %>%
group_by(!!!group_var) %>%
summarise(a = mean(a))
}
my_summarise(df, list(g1, g2), a)
my_summarise(df, list(g1, g2), b)
如何让列表中的项目单独引用?
这个问题类似于Passing dataframe column names in a function inside another function但在评论中建议使用字符串,而在这里我想使用裸列名。