【问题标题】:Linear model results written to excel file线性模型结果写入 excel 文件
【发布时间】:2018-12-26 16:55:43
【问题描述】:

我在 R 中运行一个线性模型,我希望将我的模型的整个输出写入同一个 Excel 文件。

现在,我只能对系数执行此操作,这是第一个示例。第二个示例是当我尝试将整个输出写入 excel 时,这会在代码的倒数第二行引发错误,如下所示:

# creating data set for lm
df<- cbind.data.frame(var1= rnorm(10,3,2), var2= rnorm(10,4,1))

# running sample model
lmodel<- lm(var1~var2, data = df)

# assigning model results to a variable
mod_res<- summary(lmodel)
mod_res

# assigning model coefficients to a variable
modCoeff<- coef(summary(lmodel))
modCoeff

# getting model coefficients to open in an excel spreadsheet... THIS WORKS!
lmodCoeffs<- openxlsx::createWorkbook()
openxlsx::addWorksheet(lmodCoeffs, "coeffs")
openxlsx::writeData(lmodCoeffs, "coeffs", modCoeff, rowNames= TRUE)
openxlsx::openXL(coeffs)

# look at ALL model fit stats in excel... THIS DOES NOT WORK!
modResSheet<- openxlsx::createWorkbook()
openxlsx::addWorksheet(modResSheet, "res")
openxlsx::writeData(modResSheet, "res", mod_Res, rowNames= TRUE) # error thrown here
openxlsx::openXL(modResSheet)

仅获取系数很有用,但是,在单个 excel 文件中查看所有模型拟合统计信息将使模型评估更加全面。

【问题讨论】:

    标签: r lm openxlsx


    【解决方案1】:

    如果您想要在 excel 表上显示运行print(mod_res) 时打印的输出,则可以使用capture.output。所以你问题的倒数第二行应该是

    openxlsx::writeData(modResSheet, "res", capture.output(mod_res)) 
    

    要获得更整洁的布局,您可以使用 broom 包中的 tidyglance

    library(broom) #part of tidyverse
    openxlsx::writeData(modResSheet, "res", tidy(mod_res)) 
    openxlsx::writeData(modResSheet, "res", glance(mod_res),
                        startRow = nrow(tidy(mod_res)) + 4) 
    

    【讨论】:

    • 这很好但不完全:来自此的数据格式不干净,需要大量格式化后 Excel 写入,而 lmodCoeffs 出现在干净的列/行中。 . 知道如何让格式更清晰地显示完整的模型结果吗?
    • 我添加了一个将结果分成列/行的选项。
    【解决方案2】:

    我希望您已经收到原始问题的答案。为了方便起见,我只是想添加一个替代方案,以及其他只想导出模型以进行进一步检查和模型评估的读者。包apaTables 有一个名为apa.reg.table() 的函数,它以完整的APA 样式格式(即使使用CI 和半偏相关平方)将模型输出表导出到.doc 文件。我发现这是完成您所要求的最方便的方法(假设我了解您使用它的目的)。

    【讨论】:

    • 是否也会导出为xlsxlsxcsv 格式?还是只是doc?谢谢!
    • .rtf 或 .doc 仅。这不是您所要求的实际解决方案,我不认为修改 apa.re.table() 函数将非常简单,以便导出到 Excel 电子表格中的赖特单元格。
    猜你喜欢
    • 2011-11-08
    • 2016-08-20
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 2021-10-01
    • 2023-04-10
    相关资源
    最近更新 更多