在带有tidyeval的自制函数中选择函数

时间:2019-05-02 16:02:50

标签: r dplyr rlang tidyeval

因此,该示例基本上来自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.

1 个答案:

答案 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创建