r:将线性模型结果写入excel文件

时间:2018-12-26 16:55:43

标签: r lm openxlsx

我正在R中运行线性模型,并且希望将模型的 entire 输出写入相同的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文件中的所有模型拟合统计信息将使模型评估更加全面。

2 个答案:

答案 0 :(得分:2)

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

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

要使布局更整洁,可以使用tidy软件包中的glancebroom

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) 

答案 1 :(得分:1)

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