当参数是 dplyr 中的字符串时,将 group_by_ 替换为 group_by

标签 r dplyr tidyverse

我有一些代码将分组变量指定为字符串。

group_var <- "cyl"

我当前在 dplyr 管道中使用此分组变量的代码是:

mtcars %>% 
     group_by_(group_var) %>% 
     summarize(mean_mpg = mean(mpg))

关于如何用 group_by 替换已弃用的 group_by_ 函数,我最好的猜测是:

mtcars %>% 
     group_by(!!as.name(group_var)) %>% 
     summarize(mean_mpg = mean(mpg))

这有效,但在 programming with dplyr vignette 中未明确提及.

使用 !!as.name() 是否是将 group_by_() 替换为 group_by() 的首选方法?

最佳答案

这是在一个函数中吗?否则我认为 !!as.name() 部分是不必要的,为了简单起见,我会坚持使用 @aosmith 的 group_by_at(group_var) 建议。否则,我会这样设置:

examplr <- function(data, group_var){
  group_var <- as.name(group_var)

  data %>% 
    group_by(!!group_var) %>% 
    summarize(mean_mpg = mean(mpg))
}

examplr(data = mtcars,
        group_var = "cyl")

关于当参数是 dplyr 中的字符串时,将 group_by_ 替换为 group_by,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47081564/

相关文章:

r - 如何在 VirtualBox 虚拟机上的 Solaris 上安装 R?

r - 在 dplyr::funs 的命名参数中,我可以引用其他参数的名称吗?

r - 如何根据列中的两个值过滤行?

r - 拆分数据框值并放入 R 中的一组?

运行多个模型并将模型比较结果保存在 r 中的数据框中

r - 控制 R 中枢轴的细节级别 (tidyverse)

r - 读入 R 时如何在数值中保留零

R 根据值拆分列

r - 如何从R中的嵌套列表中提取元素

r - 在 mutate 内循环