R 在循环中保存和访问回归结果

R 在循环中保存和访问回归结果,r,for-loop,lapply,R,For Loop,Lapply,我试图通过for loop中的pml包进行多个面板数据回归,然后保存结果,以便对每个回归结果使用summary。然而,我似乎不知道如何在保存结果的列表中使用摘要。这就是我尝试过的: library(plm) ########### Some toy data ################# Id <- c(rep(1:4,3),rep(5,2)) Id <- Id[order(Id)] Year <- c(rep(2000:2002,4),c(2000,2002))

我试图通过
for loop
中的
pml
包进行多个面板数据回归,然后保存结果,以便对每个回归结果使用
summary
。然而,我似乎不知道如何在保存结果的
列表中使用
摘要
。这就是我尝试过的:

library(plm)

########### Some toy data #################

Id <- c(rep(1:4,3),rep(5,2))
Id <- Id[order(Id)]
Year <- c(rep(2000:2002,4),c(2000,2002))

z1 <- rnorm(14)
z2 <- rnorm(14)
z3 <- rnorm(14)
z4 <- rnorm(14)

CORR <- rbind(c(1,0.6,0.5,0.2),c(0.6,1,0.7,0.3),c(0.5,0.7,1,0.4),c(0.2,0.3,0.4,1))
CholCORR <- chol(CORR)
DataTest <- as.data.frame(cbind(z1,z2,z3,z4)%*%CholCORR)
names(DataTest)<-c("y","x1","x2","x3")
DataTest <- cbind(Id, Year, DataTest)

############################################

for(i in 2001:2002){

  Data <- DataTest[(DataTest$Year <= i), ]
  TarLV <- plm(diff(y) ~ lag(x1) + x2 + x3, data = Data, model="pooling", index = c("Id","Year"))
  if(i==2001){
    Res1St <- TarLV
  } else {
    Res1St <- c(Res1St,TarLV)
  }
}

sapply(Res1St, function(x) summary(x))

我可能不会以一种非常合理的方式保存回归结果,而
for循环
可能是可以避免的,我只是不知道如何避免。感谢您的帮助

将plm对象存储在列表中。因此,在循环之前创建一个空对象(
out
),然后在循环中填充它

out <- NULL
yr <- 2001:2002
for(i in seq_along(yr)){
  take <- DataTest[(DataTest$Year <= yr[i]), ]
  out[[i]] <- plm(diff(y) ~ lag(x1) + x2 + x3, data = take, model="pooling", index = c("Id","Year"))

}

lapply(out, summary)

out谢谢-不,数据测试绝对不应该被覆盖。
out <- NULL
yr <- 2001:2002
for(i in seq_along(yr)){
  take <- DataTest[(DataTest$Year <= yr[i]), ]
  out[[i]] <- plm(diff(y) ~ lag(x1) + x2 + x3, data = take, model="pooling", index = c("Id","Year"))

}

lapply(out, summary)