Записать вывод в консоль (nice & tidy) и записать его в файл word
Я пытаюсь экспортировать выходную таблицу R в файл слова. я использую ReporteRs
пакет, чтобы сделать это. Я фиксирую вывод и передаю его абзацу. При таком подходе вывод на экран становится искаженным и выглядит не так, как в консоли или при сохранении в текстовом файле. Как передать вывод как есть в файл слова? Заранее спасибо.
data("cars2")
mydoc = docx(title = "Summary")
library(gmodels)
aal<-capture.output(CrossTable(cars2$Country, cars2$Type, digits=2, chisq=T))
#capture.output(CrossTable(cars2$Country, cars2$Type, digits=2, chisq=T, format="SPSS"), file="tests.txt")
mydoc<-addParagraph( mydoc, aal)
writeDoc( mydoc, file = "Summary.docx")
1 ответ
Вы должны использовать моноширинный шрифт (так как вывод консоли R использует моноширинный шрифт)
library(gmodels)
data(infert, package = "datasets")
xx=capture.output(CrossTable(infert$education, infert$induced, expected = TRUE, format="SPSS"))
Решение 1. Используйте существующий стиль (из вашего шаблона), который использует моноширинный шрифт, т.е. rRawOutput
в шаблоне по умолчанию
library( ReporteRs )
mydoc <- docx(title = "Summary")
mydoc <- addParagraph( mydoc, xx, stylename = "rRawOutput" )
writeDoc( mydoc, file = "Summary.docx")
Решение 2: использовать pot
функция для создания фрагмента текста с указанным моноширинным шрифтом
library( ReporteRs )
mydoc <- docx(title = "Summary")
mypot <- pot( paste(xx, collapse = "\n"),
format = textProperties(font.family = "Courier New", font.size = 9) )
mydoc <- addParagraph( mydoc, mypot, par.properties = parLeft() )
writeDoc( mydoc, file = "Summary.docx")
Решение 3: этот не отвечает на ваш вопрос, так как он не использует gmodels, но мне нравится вывод:
library( ReporteRs )
library( rtable )
library( broom )
data(infert, package = "datasets")
myft = freqtable(table(infert$education, infert$induced))
ct = chisq.test(infert$education, infert$induced)
mydoc = docx(title = "Summary")
mydoc = addTitle(mydoc, "Table", level = 2)
mydoc = addFlexTable( mydoc, myft )
mydoc = addTitle(mydoc, "Chi-squared Test", level = 2)
mydoc = addFlexTable( mydoc, vanilla.table( tidy(ct) ) )
writeDoc( mydoc, file = "Summary.docx")