在dplyr 0.6中对多个以编程方式指定的变量进行分组
这是新的dplyr,很快就会发布 给出了使用外部函数中指定的分组变量调用在dplyr 0.6中对多个以编程方式指定的变量进行分组,r,dplyr,tidyverse,rlang,R,Dplyr,Tidyverse,Rlang,这是新的dplyr,很快就会发布 给出了使用外部函数中指定的分组变量调用group\u by的示例: my_summarise <- function(df, group_var) { df %>% group_by(!!group_var) %>% summarise(a = mean(a)) } 我的总结% 分组依据(!!分组变量)%>% 总结(a=平均值(a)) } 当提供单个分组变量时,此选项有效。但是,由于存在多个变量,它会失败 简化示例: f
group\u by
的示例:
my_summarise <- function(df, group_var) {
df %>%
group_by(!!group_var) %>%
summarise(a = mean(a))
}
我的总结%
分组依据(!!分组变量)%>%
总结(a=平均值(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)
f有一个非常类似的问题:。我刚刚修改了一下答案,使用了syms
和代码>
library(rlang)
f <- function(x){
group_by(mtcars, !!!syms(x))
}
f(c("cyl")) %>% summarise(n())
# A tibble: 3 x 2
cyl `n()`
<dbl> <int>
1 4 11
2 6 7
3 8 14
f(c("cyl", "gear")) %>% summarise(n())
# A tibble: 8 x 3
# Groups: cyl [?]
cyl gear `n()`
<dbl> <dbl> <int>
1 4 3 1
2 4 4 8
3 4 5 2
4 6 3 2
5 6 4 4
6 6 5 1
7 8 3 12
8 8 5 2
库(rlang)
f%摘要(n())
#一个tibble:3x2
共青团()`
1 4 11
2 6 7
3 8 14
f(c(“气缸”、“齿轮”))%>%总结(n())
#一个tibble:8x3
#组别:共青团[?]
气缸齿轮'n()`
1 4 3 1
2 4 4 8
3 4 5 2
4 6 3 2
5 6 4 4
6 6 5 1
7 8 3 12
8 8 5 2
实际上,f(g1)
也不起作用。尝试f(g1)%%>%summary(n=n())
。