Страница 1 из 1

Создание отчетов в R

Добавлено: 09 июл 2020, 14:20
VistaSV30
Добрый день!

Хочу попробовать сделать проект текста отчета в формате читаемом Microsoft Word.
Нашел информацию, что это делается средствами пакетов rtf или docxtools.
Раньше я подобное уже делал, по схеме SQL -> Excel -> Word.
Интересно попробовать SQL -> R -> Word.

Предполагаемая структура документа:
Заголовок 1
Заголовок 2
Текст абзаца
Диаграмма
Таблица
...
и т.д.

С текстом абзацев, таблицами и диаграммами вроде бы получается сделать средствами rtf с остальным пытаюсь разобраться.
Из самого необходимого пока не получается сделать отступы в первой строке абзаца.

Поделитесь опытом, советами.
Заранее благодарен!

Re: Создание отчетов в R

Добавлено: 09 июл 2020, 15:59
gamm

Re: Создание отчетов в R

Добавлено: 09 июл 2020, 16:13
VistaSV30
gamm писал(а): 09 июл 2020, 15:59RTFM
Это название пакета? Такого пакета на CRAN нет

Re: Создание отчетов в R

Добавлено: 09 июл 2020, 16:38
antonv
VistaSV30, это gamm вам так недвусмысленно намекает, что набрав в гугле что-то вроде "r export to word document" вы можете найти желаемую информацию гораздо быстрее.

Re: Создание отчетов в R

Добавлено: 09 июл 2020, 17:15
VistaSV30
:wink: понятно! "Учи матчасть"!

Мне пока только не удается сделать стиль для абзаца, чтоб потом в Word можно было по всему документу эти абзацы отформатировать.
С остальным вроде разобрался.

Большинство статей в интернете описывают работу с функциями пакета ReporteRs. А он в 2018 году был исключен из CRAN, а версии ReporteRs, которые нашел в архиве CRAN не поддерживаются R 3.6.3

Re: Создание отчетов в R

Добавлено: 09 июл 2020, 17:35
gamm
VistaSV30 писал(а): 09 июл 2020, 16:13Это название пакета? Такого пакета на CRAN нет
это не пакет - ошибся с тэгами, прошу пардону. Поправил в сообщении, это https://rmarkdown.rstudio.com/
но это как ggplot, тоже для мазохистов, я его так и не победил. Оказалось проще вставлять картинки и вывод программ в текст в Word.

Re: Создание отчетов в R

Добавлено: 11 июл 2020, 05:33
nplatonov
Rmarkdown.

Создаете файл "res1.Rmd" в UTF-8 с содержимым:

Код: Выделить всё

---
output:
   word_document:
      reference_docx: ~
---

# Заголовок 1

## Заголовок 2

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quamquam tu hanc copiosiorem etiam soles dicere. Aliter autem vobis placet. Res enim concurrent contrariae. Num quid tale Democritus? An eiusdem modi? Suo genere perveniant ad extremum; 

```{r, echo=FALSE}
pie(c(Sky = 78, "Sunny side of pyramid" = 17, "Shady side of pyramid" = 5),
    init.angle = 315, col = c("deepskyblue", "yellow", "yellow3"), border = FALSE)
```

```{r, echo=FALSE}
knitr::kable(head(mtcars))
```
2. Из R CLI/GIU:

Код: Выделить всё

rmarkdown::render("res1.Rmd")
3. На выходе "ref1.docx". Копируете или переименовывайте в "res1-ref.docx". Открываете в офисе, в стиле "Body text" делаете отступ. Сохраняете.

4. Возвращаетесь к "res1.Rmd". Меняете "reference_docx: ~" на reference_docx: "res1-ref.docx"

Код: Выделить всё

---
output:
   word_document:
      reference_docx: res1-ref.docx
---
5. Из R CLI/GIU:

Код: Выделить всё

rmarkdown::render("res1.Rmd")
Можете сразу к шагам 4-5, если есть шаблон с нужными стилями.

Re: Создание отчетов в R

Добавлено: 11 июл 2020, 18:32
VistaSV30
Решил пока делать файл Word средствами пакета rtf, а окончательное форматирование выполнять в Word

Код: Выделить всё

# Создание файла отчета в формате Word
library(rtf)
output <- "Report.doc" # Открыть файл "Report.doc" в рабочей директории 
rtf <- RTF(output, font.size = 14) #  font.size – размер шрифта документа
addParagraph(rtf, "\\bЗаголовок\\b0") #Заголовок выделен жирным шрифтом
addParagraph(rtf, "Текст первого параграфа")
addParagraph(rtf, "Текст второго параграфа")

# Таблица
tab <- table(iris$Species,floor(iris$Sepal.Length)) 
names(dimnames(tab)) <- c("Species","Sepal Length") 
addParagraph(rtf, "Таблица N - Образец таблицы")
addTable(rtf, tab, font.size = 12, row.names = TRUE, NA.string = "-", 
         col.widths = c(1, rep(0.5, 4)) )

# Диаграмма
addPlot(rtf,plot.fun=plot,width=6,height=6,res=300, iris[,1],iris[,2])
addParagraph(rtf, "Рис.Базовая графика")

# Диаграмма ggplot2
library(ggplot2)
mt <- ggplot(mtcars, aes(mpg, wt, colour = factor(cyl))) + geom_point()
print(mt)
addPlot(rtf, plot.fun = print, width = 5,height = 4, res = 300, mt)
addParagraph(rtf, "Рис.Диаграмма ggplot2")

done(rtf) # Запись текста в файл "Report.doc"