我也做同样的事情。当然,这里的困难在于,如果模型具有不同数量的系数,那么您将拥有不同数量的列,这在 data.frame 中是不可能的。每个模型需要具有相同数量的列。
我通常用它来glm
(这些代码片段已被注释掉)但我将其修改为lm
为你:
models <- c()
for (i in 1:10) {
y <- rnorm(100) # generate some example data for lm
x <- rnorm(100)
m <- lm(y ~ x)
# in case of glm:
#m <- glm(y ~ x, data = data, family = "quasipoisson")
#overdispersion <- 1/m$df.residual*sum((data$count-fitted(m))^2/fitted(m))
coef <- summary(m)$coef
v.coef <- c(t(coef))
names(v.coef) <- paste(rep(rownames(coef), each = 4), c("coef", "stderr", "t", "p-value"))
v.model_info <- c(r.squared = summary(m)$r.squared, F = summary(m)$fstatistic[1], df.res = summary(m)$df[2])
# in case of glm:
#v.model_info <- c(overdisp = summary(m)$dispersion, res.deviance = m$deviance, df.res = m$df.residual, null.deviance = m$null.deviance, df.null = m$df.null)
v.all <- c(v.coef, v.model_info)
models <- rbind(models, cbind(data.frame(model = paste("model", i, sep = "")), t(v.all)))
}
我更喜欢从中获取数据summary(m)
。将数据捆绑到data.frame
,你使用cbind
(列绑定)和rbind
(行绑定)函数。