r: результаты линейной модели записываются в файл Excel - PullRequest
0 голосов
/ 26 декабря 2018

Я использую линейную модель в 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 сделает оценку модели более полной.

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

Надеюсь, вы уже получили ответ на свой оригинальный вопрос.Я просто хотел добавить альтернативу для удобства и других читателей, которые просто хотят экспортировать свои модели для дальнейшей проверки и оценки моделей.В пакете apaTables имеется функция с именем apa.reg.table(), которая экспортирует выходную таблицу модели в файл .doc с полным форматированием в стиле APA (даже с CI и квадратом полуп частичной корреляции).Я считаю, что это наиболее удобный способ сделать то, что вы просите (при условии, что я понял, для чего вы его используете).

0 голосов
/ 26 декабря 2018

Если то, что вы хотите на листе Excel, - это вывод, напечатанный при запуске print(mod_res), вы можете использовать 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) 
...