当参数是 dplyr 中的字符串时,将 group_by_ 替换为 group_by
Replacing group_by_ with group_by when the argument is a string in dplyr
我有一些代码将分组变量指定为字符串。
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")
我有一些代码将分组变量指定为字符串。
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")