首页 > 解决方案 > 自定义函数中的 dplyr group_by 问题;与tidyeval有关吗?

问题描述

我正在尝试编写一个函数来制作一个长的三向列联表,使用 group_by 并从 dplyr 进行汇总。我从一个包含 3 个因子变量的小标题开始:年份、乳房 X 线照片和 sp。

> c_table_fn <- function(x){
+ factors %>%
+ group_by(year,mammogram,x) %>%
+ summarize(n = n())}
> 
> c_table_fn(sp)

Error: Must group by variables found in `.data`.
* Column `x` is not found

我的函数给了我上述错误。但是,当我不在函数中运行相同的代码时,它运行良好并且我得到了所需的表。


> factors %>%
+ group_by(year,mammogram,sp) %>%
+ summarize(n = n())
`summarise()` has grouped output by 'year', 'mammogram'. You can override using the `.groups` argument.

我认为这是由于整洁评估的问题。我尝试按照 dplyr 编程小插图中的建议将函数中的 x 更改为 {{x}} 以及 .data[[x]] ,但这没有帮助。

标签: rdplyrtidyeval

解决方案


我们可以用{{}}

c_table_fn <- function(x){
 factors %>%
 group_by(year,mammogram,{{x}}) %>%
 summarize(n = n())
}

-测试

 c_table_fn(sp)

推荐阅读