我试图用这个典型例子来说明卷曲运算符的工作原理
mean_by <- function(data, by, var) {
data %>%
dplyr::group_by({{ by }}) %>%
dplyr::summarise(avg = mean({{ var }}, na.rm = TRUE))
}
mtcars %>% mean_by(by = cyl, var = disp)
并通过向分组添加一个额外的变量来修改它。唉,我可能永远都不明白这个操作符到底做了什么;我尝试做的事情如下
mean_by <- function(data, by, var) {
data %>%
dplyr::group_by({{ c(by, hp) }}) %>%
dplyr::summarise(avg = mean({{ var }}, na.rm = TRUE))
}
mtcars %>% mean_by(by = cyl, var = disp)
显然不起作用
几年前
dplyr
添加了pick
允许人们传递{{}}
数据屏蔽功能的功能。所以你可以做这样的事情。创建于 2024-09-18,使用reprex v2.1.0
可以使用以下方法
rlang::enquos()
来化解多个表达式:然而,正如这篇 Tidyverse博客文章所述:
因此,在您的情况下,按分组
hp
以及调用者传递的其他内容进行分组: