如果您愿意,可以使用for 循环来解决此问题。您的问题是随着循环的进行,结果没有保存到对象中。您可以在下面查看使用内置 mtcars 数据框的示例。
(第一个示例是根据 OP 对如何提取 R 平方值的示例的请求进行修改的。)
ListOfTraining <- list(mtcars, mtcars)
results <- list()
for (i in seq_along(ListOfTraining)) {
lm_obj <- lm(disp ~ qsec, data = ListOfTraining[[i]])
tmp <- c(lm_obj$coefficients, summary(lm_obj)$r.squared)
names(tmp)[length(tmp)] <- "r.squared"
results[[i]] <- tmp
}
results <- do.call(rbind, results)
results
您还可以使用lapply 重写for 循环,如下所示。
ListOfTraining <- list(mtcars, mtcars)
results <- list()
results <- lapply(ListOfTraining, function(x) {
lm(disp ~ qsec, data = x)$coefficients
})
results <- do.call(rbind, results)
results
最后,您可以使用plyr 包的ldply 函数,它会自动将列表应用的输出转换为数据框(如果可能的话)。
ListOfTraining <- list(mtcars, mtcars)
results <- plyr::ldply(ListOfTraining, function(x) {
lm(disp ~ qsec, data = x)$coefficients
})
results