Это с новым dplyr, который будет выпущен в ближайшее время.
сценка программирования dplyr дает пример вызова group_by
с переменными группировки, указанными во внешнем функция:
my_summarise <- function(df, group_var) {
df %>%
group_by(!!group_var) %>%
summarise(a = mean(a))
}
Это работает при наличии одной группирующей переменной. Однако он терпит неудачу с несколькими переменными.
Упрощенный пример:
f <- function(x)
{
group_by(mtcars, !!x)
}
## works
g1 <- "cyl"
f(g1)
## doesn't work
#Error in mutate_impl(.data, dots) :
# Column `c("cyl", "gear")` must be length 32 (the number of rows) or one, not 2
g2 <- c("cyl", "gear")
f(g2)
Как я могу это исправить в рамках rlang?
В идеале я хочу, чтобы подпись f
оставалась прежней, т.е. я указываю группирующие переменные как один вектор, а не через аргумент ...
.
f(g1)
тоже не работает. Попробуйтеf(g1) %>% summarize(n=n())
. - person JasonWang   schedule 25.05.2017