我想創建一個函數,將列名稱列表傳遞給dplyr
函數。我知道,如果列名稱的列表中...
形式給出如何做到這一點,作爲tidyeval
文檔中解釋說: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,但在評論中建議使用字符串,而在這裏我想使用裸列名。
也許這裏是與您的問題相關的另一個問題https://stackoverflow.com/questions/44166247/referring-to-individual-variables-in-with-dplyr-quos –
如何將您的「group_var」參數作爲通過'quos'而不是'list',如[回答]的第一部分所示(https://stackoverflow.com/a/44593617/2461552)? – aosmith