【发布时间】:2019-10-27 09:47:52
【问题描述】:
我一直在使用 map() 从多个 lm() 模型中计算和提取某些统计数据。
举一个可重复的例子,使用 mtcars 数据集,我从一个输入向量开始,该向量要使用lm() 模型进行估计:
library(tidyverse)
df <- mtcars
input_char <- c("mpg ~ disp",
"mpg ~ disp + hp")
input_formula <- map(input_char, formula)
然后我有一个函数可以计算和提取每个模型的相关统计数据。为了简单和可重复性,这里有一个简化的函数,它只提取模型的 R 平方。
get_rsquared <- function(a_formula) {
model1 <- lm(a_formula, data = df)
rsquared <- summary(model1)$r.squared
c(model = a_formula, rsquared = rsquared)
}
然后我使用map 遍历公式并从每个模型中提取 R 平方。
models <- map(input_formula, get_rsquared)
models
给出输出:
[[1]]
[[1]]$model
mpg ~ disp
<environment: 0x7f98987f4000>
[[1]]$rsquared
[1] 0.7183433
[[2]]
[[2]]$model
mpg ~ disp + hp
<environment: 0x7f98987f4000>
[[2]]$rsquared
[1] 0.7482402
我的问题是关于输出是一个列表。
有没有一种简单的方法可以使输出成为数据帧?
我想要的输出是:
#> model rsquared
#> 1 mpg ~ disp 0.7183433
#> 2 mpg ~ disp + hp 0.7482402
【问题讨论】: