library("knitr")
library("dplyr")
## 
## Attaching package: 'dplyr'
## 
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## 
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union

С помощью R удобно создавать и документы предназначенные для чтения человеком. Теоретически, любой язык разметки документов можно комбинировать с командами R. Мы остановимся на двух наиболее актуальных для написания статей и презентаций: латехе и маркдауне.

Маркдаун — очень простой язык разметки, и поэтому он легко автоматически конвертируется в более сложные форматы: html, tex, docx и другие.

Цепочка Rmd-md-html

Начнём с создания Rmd документа, который будет автоматически преобразовываться в html.

Минимальный пример, 26_small_rmd_demo.Rmd:

---
title: "Сопелка"
author: "Винни-Пух"
date: "1969"
lang: russian
output: html_document
---

В этой Сопелке Винни-Пух узнает, сколько будет 2 умножить 2:
```{r}
a <- 2
b <- 2
a * b
```
library("htmlwidgets") # работа с виджетами 
library("DiagrammeR") # рисование диаграмм
library("webshot") # сохранение виджетов в формате png или pdf

Табличка с данными:

Табличка со сравнением нескольких моделей:

График:

Для динамических интерактивных документов формат html гораздо лучше, чем docx или pdf. Помимо статичных графиков и таблиц здесь уйма возможностей!!! Их можно и нужно использовать в презентациях!

Интерактивная карта:

library("leaflet")
map <- leaflet() %>%
  addTiles() %>%  # Add default OpenStreetMap map tiles
  addMarkers(lng = 37.6087, lat = 55.72069, 
             popup = "Особняк Симоно")
map

Временной ряд с масштабированием:

library("dygraphs")
dygraph(nhtemp, main = "New Haven Temperatures") %>% 
  dyRangeSelector(dateWindow = c("1920-01-01", "1960-01-01"))

Гистограмма с переключением:

library("rCharts")
hair_eye_male <- filter(as.data.frame(HairEyeColor), Sex == "Male")
a <- nPlot(Freq ~ Hair, group = 'Eye', data = hair_eye_male, type = 'multiBarChart')
a$show("iframesrc", cdn = TRUE)

Если hmtl-виджет очень понравился, то его можно и в статический документ экспортировать.

Виджет, чтобы экспортировать виджеты, называется exportwidget.

We need to go deeper

Автоматическое сохранение виджетов в png/pdf также возможно, например, с помощью пакета webshot. Для использования webshot потребуется установить phantomjs и добавить путь в переменную PATH. На маке есть маленький баг в phantomjs и есть исправление для него. Проверить, что R видит phantomjs можно командой Sys.which("phantomjs"). В ответ R должен выдать путь к установленному исполняемому файлу phantomjs.

m <- grViz(" digraph { a->b; b->c; c->a; }")
saveWidget(m, "temp.html", selfcontained = FALSE)
webshot("temp.html", file = "temp.png", cliprect = "viewport")

И покажем сохранённую картинку: simple diagram

Для презентаций уже есть заранее заготовленные красивые разбивки на слайды. тут про презентации

Цепочка Rmd-md-docx

Авторы данного документа категорически против использования MS Word для написания статей, домашних работ, презентаций и чего бы то ни было. Но если гопники окружили в тёмном переулке и спрашивают: “Ворд есть?”, то:

Минимальный документ:

Табличка с данными:

Табличка со сравнением нескольких моделей:

График:

Цепочка Rnw-tex-pdf

Минимальный документ:

Создаём минимальный Rnw-документ.

Табличка с данными:

Табличка со сравнением нескольких моделей:

График:

Проблема русских букв на графике:

Цепочка Rmd-md-tex-pdf

Минимальный документ:

Цепочка Rmd-md-tex-pdf длиннее, чем Rnw-tex-pdf. Минус в том, что выше риск столкнуться с проблемой при преобразованиях на пути к финальному pdf. Плюс в большей универсальности: захотел вместо pdf сделать html и через несколько секунд всё готово, а сделать html из Rnw нетривиальная задача.

Табличка с данными:

Табличка со сравнением нескольких моделей:

График:

Подгрузка пакетов и прочее в начале документа:

Список литературы

изложить по bib+cite

Почиташки: