从估计对象列表中提取系数
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)))
我看到了一些类似的问题,但我的问题似乎更简单。
我是 运行 比我的 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)))