我正在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文件中的所有模型拟合统计信息将使模型评估更加全面。
答案 0 :(得分:2)
如果运行print(mod_res)
时要在excel表上打印输出,则可以使用capture.output
。所以问题的倒数第二行应该是
openxlsx::writeData(modResSheet, "res", capture.output(mod_res))
要使布局更整洁,可以使用tidy
软件包中的glance
和broom
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文件。我发现它是您要问的最方便的方法(假设我了解您在使用它的目的)。