Можно ли передать список функций в dplyr :: summaze таким образом, чтобы список функций мог изменяться? Я хотел бы создать общую функцию для создания сводной таблицы, но разрешить разные для разных групп функций в выводе - [править: когда функции не все применяются к одному и тому же столбцу].
Я думал, что это можно сделать, создав общую функцию, с которой группа итоговых функций будет включена в аргументы T / F (где funA = T / F, funB = T / F - это списки функций и пользователь может включать все функции из funA, funB или из обоих), но я не умею писать начальный список функций (funA, funB) - когда функции не все применяются к одному и тому же столбцу. Ниже идея того, как это будет структурировано. Это возможно, или есть лучший способ сделать это?
#Essentially - how would I write a function to selectively include a group of functions (for example either funA = c(n, min, max) or funB=c(n_na, n_neg), or both).
extract_all <- function(x){
x %>% summarize(n=n(),
min = min(disp, na.rm=TRUE),
max = max(disp, na.rm=TRUE),
n_na = sum(is.na(wt)),
n_neg = sum(vs < 0, na.rm=TRUE))
}
test <- mtcars %>% group_by(cyl) %>% extract_all()
#Does this structure work?
extract_summaries <- function(x, funA=TRUE, funB=FALSE){
funAls <- list() #but how do you write n, min, max in here?
funBls <- list() #and n_na, n_neg in here
funls <- append(funAls[funA], funBls[funB])
summarize(x, funls)
}
#which could be run with:
test <- mtcars %>% group_by(cyl) %>% extract_summaries(funA=TRUE, funB=TRUE)
}