2
これは、Real Soon Nowでリリースされる新しいdplyrに含まれています。 dplyr programming vignettedplyrでプログラムで指定された複数の変数をグループ化する。0.6
は、外側の関数で指定されたグループ化変数と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
のシグネチャを同じままにします。すなわち、グループ化変数を...
引数ではなく1つのベクトルとして指定します。
実際、 'f(g1)'はうまく動作しません。 'f(g1)%>%summarize(n = n())'を試してください。 – JasonWang