R中通过聚合函数的循环

R中通过聚合函数的循环,r,loops,R,Loops,我试图在聚合函数中使用for循环,我无法通过for循环在聚合函数中分配X1,X2,X3。我已经创建了一个虚构的示例,并且还有我的代码 year = cbind(rep(2000, 12), rep(2001, 12), rep(2002, 12)) year = as.vector(as.matrix(year)) month = cbind(seq(1:12), seq(1:12), seq(1:12)) month = as.vector(as.matrix(month)) X1

我试图在聚合函数中使用for循环,我无法通过for循环在聚合函数中分配
X1
X2
X3
。我已经创建了一个虚构的示例,并且还有我的代码

 year = cbind(rep(2000, 12), rep(2001, 12), rep(2002, 12))
 year = as.vector(as.matrix(year))
 month = cbind(seq(1:12), seq(1:12), seq(1:12))
 month = as.vector(as.matrix(month))
 X1 = rnorm(36, mean = 0, sd = 1)
 X2 = rnorm(36, mean = 2, sd = 1)
 X3 = rnorm(36, mean = 0, sd = 1)
 DF = data.frame(cbind(year, month, X1, X2, X3))

 for (i in 1:3) {
     bb_month = aggregate(as.symbol(sprintf('X%1.0f', i)) ~ month + year, DF , sum)
 }

如果我理解正确,这应该可以做到:

year <- rep(c(2000:2002), each = 12)
month <- rep(1:12, 3)
days <- rep("it's a day!", length(year)) #dummy var

X1 <- rnorm(36,  mean = 0,  sd = 1)
X2 <- rnorm(36,  mean = 2,  sd = 1)
X3 <- rnorm(36,  mean = 0,  sd = 1)

DF <- data.frame(year, month, days, X1, X2, X3)

aggregate(formula = . ~ year + month,
          data = DF[, names(DF) != "days"],
          FUN = sum)

你到底想做什么?当你只有这些因素的唯一组合时,你想按月+年求和。我有一个每日数据,这个例子只是为了说明循环是否对这个曼内利有效,但我希望它在循环中发生,因为我正在做其他进一步的计算。我只想把聚合函数中的X1改成X2,X3。。。随着循环的进行等等
for (i in 1:3) {
  fml <- as.formula(sprintf('X%i ~ month + year', i))
  bb_month <- aggregate(formula = fml,
                        data = DF, FUN = sum)
  ###Loop continues###
}