summaryBy和许多变量

summaryBy和许多变量,r,R,我想使用summaryBy并使用三个分组变量(公式右侧),但要汇总170个左右的变量(在我的例子中,计算中值)。如何在同一公式中指定它们 而不是打字 var1+var2+var3... 等等,我想我可以做一根这样的线。这本身就是一个完整的项目,但至少我现在存储了一个字符串,它是所有变量之间带加号的字符串。我称之为z1 现在,在我的summaryBy脚本中简单地要求z1甚至粘贴(z1)都不起作用: d <- summaryBy(paste(z1) ~ year + month + ID,

我想使用summaryBy并使用三个分组变量(公式右侧),但要汇总170个左右的变量(在我的例子中,计算中值)。如何在同一公式中指定它们

而不是打字

var1+var2+var3...
等等,我想我可以做一根这样的线。这本身就是一个完整的项目,但至少我现在存储了一个字符串,它是所有变量之间带加号的字符串。我称之为
z1

现在,在我的summaryBy脚本中简单地要求
z1
甚至
粘贴(z1)
都不起作用:

d <- summaryBy(paste(z1) ~ year + month + ID,
                data=.., 
                FUN=c(median,sum), 
                na.rm=TRUE)

d问题在于
paste
只是围绕着感兴趣的变量。可能是

library(doBy)
summaryBy(as.formula(paste(z1, "~ year + month + ID")),
            data=.., 
            FUN=c(median,sum), 
            na.rm=TRUE)
在哪里

z1 <- paste0('var', 1:3, collapse=" + ")

因此,感谢@akrun,下面的代码现在可以工作了:

d<-summaryBy(as.formula(paste(z1,"~year+month+ID")),
              data=..,
              FUN=c(median,sum),
              na.rm=TRUE)
d
d<-summaryBy(as.formula(paste(z1,"~year+month+ID")),
                data=..,
                FUN=c(median,sum),
                na.rm=TRUE)'
library(doBy)
summaryBy(as.formula(paste(z1, "~ year + month + ID")),
            data=.., 
            FUN=c(median,sum), 
            na.rm=TRUE)
z1 <- paste0('var', 1:3, collapse=" + ")
data(dietox)
dietox12    <- subset(dietox,Time==12)
fun <- function(x){
   c(m=mean(x), v=var(x), n=length(x))
 }

out1 <-  summaryBy(cbind(Weight, Feed) ~ Evit + Cu, data=dietox12,
       FUN=fun)

out2 <-  summaryBy(Weight +  Feed ~ Evit + Cu, data=dietox12,
                      FUN=fun)

z2 <- paste(c("Weight", "Feed"), collapse=" + ")
out3 <- summaryBy(as.formula(paste(z2,  "~ Evit + Cu")), data=dietox12,
       FUN=fun)
identical(out1, out2)
#[1] TRUE
identical(out1, out3)
#[1] TRUE
d<-summaryBy(as.formula(paste(z1,"~year+month+ID")),
              data=..,
              FUN=c(median,sum),
              na.rm=TRUE)