相关疑难解决方法(0)

用准引号将参数列表传递给函数

我试图用R编写一个函数,该函数根据分组变量汇总数据帧。分组变量作为列表给出并传递给group_by_at,我想对其进行参数化。

我现在正在做的是这样的:

library(tidyverse)

d = tribble(
  ~foo, ~bar, ~baz,
  1, 2, 3,
  1, 3, 5
  4, 5, 6,
  4, 5, 1
)

sum_fun <- function(df, group_vars, sum_var) {
  sum_var = enquo(sum_var)
  return(
    df %>% 
      group_by_at(.vars = group_vars) %>% 
      summarize(sum(!! sum_var))
  )
}

d %>% sum_fun(group_vars = c("foo", "bar"), baz)
Run Code Online (Sandbox Code Playgroud)

但是,我想这样调用该函数:

d %>% sum_fun(group_vars = c(foo, bar), baz)
Run Code Online (Sandbox Code Playgroud)

这意味着不应在调用中评估分组变量,而应在函数中评估分组变量。我将如何重写该功能以启用该功能?

我试过enquo像summary变量一样使用,然后替换group_vars!! group_vars,但这会导致此错误:

Error in !group_vars : invalid argument type
Run Code Online (Sandbox Code Playgroud)

使用group_by(!!!group_vars)收益:

Column `c(foo, …
Run Code Online (Sandbox Code Playgroud)

r dplyr tidyeval

3
推荐指数
1
解决办法
202
查看次数

标签 统计

dplyr ×1

r ×1

tidyeval ×1