R 如何使用不同的by变量以编程方式总结tbl?

R 如何使用不同的by变量以编程方式总结tbl?,r,dplyr,R,Dplyr,我想重写下面的代码,使用一个循环来迭代by变量“a”和“b”。我该怎么做 set.seed(1234) mydata <- as.tbl(data.frame(a=1:12, b=runif(12), x=rnorm(12))) mydata library(dplyr) library(Hmisc) mydata %>% mutate(feature=cut2(a, g=3)) %>% group_by(feature) %>% # group by q

我想重写下面的代码,使用一个循环来迭代by变量“a”和“b”。我该怎么做

set.seed(1234)
mydata <- as.tbl(data.frame(a=1:12, b=runif(12), x=rnorm(12)))
mydata

library(dplyr)
library(Hmisc)

mydata %>%
  mutate(feature=cut2(a, g=3)) %>% 
  group_by(feature) %>%  # group by quantiles of 'a'
  summarise(x=mean(x))

mydata %>%
  mutate(feature=cut2(b, g=3)) %>% 
  group_by(feature) %>%  # group by quantiles of 'b'
  summarise(x=mean(x))
set.seed(1234)
mydata%
突变(特征=cut2(a,g=3))%>%
按(特征)分组%>%#按“a”的分位数分组
总结(x=平均值(x))
mydata%>%
变异(特征=cut2(b,g=3))%>%
按(特征)分组%>%#按“b”的分位数分组
总结(x=平均值(x))

我们可以从
lazyeval
使用
interp

library(lazyeval)
lapply(c('a', 'b'), function(var)
                mydata %>% 
                  mutate_(feature=interp(~cut2(v1, g=3), v1=as.name(var))) %>% 
                          group_by(feature) %>%
                  summarise(x=mean(x)) )