将模型摘要转换为数据框

Convert model summary to data frame

我正在阅读此 post: 关于将摘要转换为数据框。但是我不确定如何为模型摘要做这件事,即:

set.seed(42)
y <- rnorm(100)
x <- rexp(100)
model <- lm(y ~ x)

正在尝试使用 post

中的代码
data.frame(unclass(summary(model)), check.names = FALSE, stringsAsFactors = FALSE)

但是我看到错误:

Error in model.frame.default(formula = y ~ x, drop.unused.levels = TRUE) : 
  invalid type (list) for variable 'x'

有什么简单的方法可以转换它吗?

model_df <- as.data.frame(coef(summary(model)))

#               Estimate Std. Error   t value   Pr(>|t|)
# (Intercept)  0.2308795 0.15761451  1.464836 0.14616637
# x           -0.1645842 0.09883217 -1.665290 0.09904877

为了避免行名,您可以在之后将它们添加为列或直接使用 data.table:

library(data.table)
model_df <- data.table(coef(summary(model)), keep.rownames = 'term')
setDF(model_df)

#          term   Estimate Std. Error   t value   Pr(>|t|)
# 1 (Intercept)  0.2308795 0.15761451  1.464836 0.14616637
# 2           x -0.1645842 0.09883217 -1.665290 0.09904877

编辑:如评论所述,但 deschen,列名不会很好地修复您可以使用的列名 setNames()

model_df <- 
  setNames(model_df, c("term", "coef", "std_error", "t_value", "p_value"))
#          term       coef  std_error   t_value    p_value
# 1 (Intercept)  0.2308795 0.15761451  1.464836 0.14616637
# 2           x -0.1645842 0.09883217 -1.665290 0.09904877