0

我在 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 文件中查看所有模型拟合统计信息将使模型评估更加全面。

4

2 回答 2

3

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

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

对于更整洁的布局,您可以使用tidyglancebroom包中

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) 
于 2018-12-26T17:25:54.830 回答
1

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

于 2018-12-26T17:47:52.977 回答