从估计对象列表中提取系数

Extract coefficients from a list of estimation objects

我看到了一些类似的问题,但我的问题似乎更简单。

我是 运行 比我的 MWE 更复杂的回归,最终得到一个估计对象列表。我想知道是否有比在列表的数字或名称上使用另一个 for 循环更优雅的方法来提取列表的系数。

list.lm<-list()
for(i in 1:3) {
list.lm[[i]]<-lm(mpg~cyl+runif(32), data=mtcars)
}

我知道我可以使用 apply 来获取系数,但我无法转换它

sapply(list.lm,coefficients)

 t(sapply(list.lm, coefficients))

好的,那我可以做

data.frame(iteration=seq(1,3),t(sapply(list.lm,coefficients)))

这与我的循环相同

results<-data.frame(iteration=numeric(),intercept=numeric(), cyl=numeric(), rand=numeric())
for(i in 1:3) {
results[i,]<-c(iteration=i,coefficients(list.lm[[i]]))
}
results

一种简单的方法是只使用 sapply 并转置结果,而不是 lapply

t(sapply(list.lm,coefficients))
#      (Intercept)       cyl runif(32)
# [1,]    35.43360 -2.774654  4.163870
# [2,]    38.71960 -2.840392 -1.896252
# [3,]    38.97739 -2.784622 -3.955039

您可能还想查看 Hadley 的 purrr 包 and/or David Robinson 的 broom 包。参见 https://blog.rstudio.org/2015/09/29/purrr-0-1-0/ and https://cran.r-project.org/web/packages/broom/broom.pdf

我只需要使用转置和 sapply/vapply

data.frame(iteration=seq(1,3),t(sapply(list.lm,coefficients)))