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

时间:2017-11-02 17:45:11

标签: 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()吗?

1 个答案:

答案 0 :(得分:1)

这是一个功能吗?否则我认为!!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")