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

时间:2016-11-07 22:15:04

标签: r lm

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

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

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

2 个答案:

答案 0 :(得分:1)

一种简单的方法是使用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包和/或David Robinson的broom包。请参阅https://blog.rstudio.org/2015/09/29/purrr-0-1-0/https://cran.r-project.org/web/packages/broom/broom.pdf

答案 1 :(得分:0)

我只需要使用transpose和sapply / vapply

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