Я пытаюсь понять tidyeval и наткнулся на учебник от Лайонела Генри.Я также прочитал виньетка от dplyr.Они описывают различные методы передачи нескольких аргументов, например, при использовании group_by
.
В чем разница между двумя примерами ниже?Проще говоря (если это возможно): какой из них мне следует использовать и почему?
library(dplyr)
mean_by <- function(data, var, ...) {
var <- enquo(var)
data %>%
group_by(...) %>%
summarise(avg = mean(!! var))
}
mean_by2 <- function(data, var, ...) {
var <- enquo(var)
group <- quos(...)
data %>%
group_by(!!! group) %>%
summarise(avg = mean(!! var))
}
all_equal(mean_by(starwars, height, species, eye_color),
mean_by2(starwars, height, species, eye_color))
#> [1] TRUE
Created on 2018-10-05 by the [reprex
package](http://reprex.tidyverse.org) (v0.2.0).