Я хочу расширить выражение !!!
так же, как это делают в dplyr-глаголах, например,
aggregate_expressions <- list(n = quote(n()))
do_something(iris, !!!(aggregate_expressions))
и сказать, что я хочу, чтобы do_something
выполнил
do_something <- function(...) {
iris %>%
some_function( # expand the ... # ) # some_function(n = n())
}
, что будет сделать это, но n = n()
является динамическим c
do_something <- function(...) {
iris %>%
some_function(n = n())
}
Я попытался отследить код для dplyr::summarise
, и я вижу, что enquos(...)
, который преобразует ...
в список quosure
но тогда как мне применить условия? Я думаю, что я должен создать код summarise(n = n())
из этого предложения, а затем оценить, используя eval_tidy
, но я не могу понять, как сгенерировать код. Я знаю, что pass ... summarise
работает, но фактический вариант использования - передать его на summarise.disk.frame
, что означает, что я не могу просто повторно использовать dplyr::summarise
Фактический случай, я не
Например, в dplyr ниже работает aggregate_expression
, используя !!!
aggregate_expressions <- list(n = quote(n()))
iris %>%
group_by(Species) %>%
summarise(!!!(aggregate_expressions))