【发布时间】:2019-05-02 16:02:50
【问题描述】:
所以这个例子基本上来自https://tidyeval.tidyverse.org/dplyr.html#patterns-for-single-arguments,它工作得很好:
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.
我想例如有时可以选择中位数而不是平均值,例如将函数名称更改为group_stat()。
【问题讨论】: