【发布时间】:2015-02-25 14:23:12
【问题描述】:
我正在编写一个函数,要求用户在函数调用中定义一个或多个分组变量。然后使用 dplyr 对数据进行分组,如果只有一个分组变量,它会按预期工作,但我还没有弄清楚如何使用多个分组变量。
例子:
x <- c("cyl")
y <- c("cyl", "gear")
dots <- list(~cyl, ~gear)
library(dplyr)
library(lazyeval)
mtcars %>% group_by_(x) # groups by cyl
mtcars %>% group_by_(y) # groups only by cyl (not gear)
mtcars %>% group_by_(.dots = dots) # groups by cyl and gear, this is what I want.
我尝试将y 变成与dots 相同的使用:
mtcars %>% group_by_(.dots = interp(~var, var = list(y)))
#Error: is.call(expr) || is.name(expr) || is.atomic(expr) is not TRUE
如何使用用户定义的>1个变量名的输入字符串(如示例中的y)使用dplyr对数据进行分组?
(这个问题在某种程度上与this one 相关,但没有在那里回答。)
【问题讨论】:
-
这就是为什么你应该开始使用
data.table:)as.data.table(mtcars)[, sum(carb), y]j/k。好问题。 -
有一天我可能会 :) 但现在我会坚持使用 dplyr..