因此,该示例基本上来自https://tidyeval.tidyverse.org/dplyr.html#patterns-for-single-arguments,并且工作正常:
.env
我想例如有时可以选择中位数而不是均值,例如将函数名称更改为library(tidyverse)
group_mean <- function(df, group_var, summary_var){
group_var <- rlang::enquo(group_var)
summary_var <-rlang::enquo(summary_var)
name <- paste0(rlang::quo_name(summary_var), "_mean")
df %>%
dplyr::group_by(!!group_var) %>%
dplyr::summarise(!!name := mean(!!summary_var, na.rm = TRUE))
}
mtcars %>% group_mean(group_var = cyl, summary_var = disp)
#> # A tibble: 3 x 2
#> cyl disp_mean
#> <dbl> <dbl>
#> 1 4 105.
#> 2 6 183.
#> 3 8 353.
。
答案 0 :(得分:5)
您可以执行以下操作。我不太确定它是如何工作的,但是我已经在library(purrr)
的{{1}}的源代码中使用了这种方法:
https://github.com/tidyverse/purrr/blob/master/R/as_mapper.R
as_mapper()
由reprex package(v0.2.1)于2019-05-02创建