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
документа, который будет автоматически преобразовываться в 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.
Автоматическое сохранение виджетов в 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")
И покажем сохранённую картинку:
Для презентаций уже есть заранее заготовленные красивые разбивки на слайды. тут про презентации
Авторы данного документа категорически против использования MS Word для написания статей, домашних работ, презентаций и чего бы то ни было. Но если гопники окружили в тёмном переулке и спрашивают: “Ворд есть?”, то:
Минимальный документ:
Табличка с данными:
Табличка со сравнением нескольких моделей:
График:
Минимальный документ:
Создаём минимальный Rnw
-документ.
Табличка с данными:
Табличка со сравнением нескольких моделей:
График:
Проблема русских букв на графике:
Минимальный документ:
Цепочка Rmd-md-tex-pdf длиннее, чем Rnw-tex-pdf. Минус в том, что выше риск столкнуться с проблемой при преобразованиях на пути к финальному pdf
. Плюс в большей универсальности: захотел вместо pdf
сделать html
и через несколько секунд всё готово, а сделать html
из Rnw
нетривиальная задача.
Табличка с данными:
Табличка со сравнением нескольких моделей:
График:
Подгрузка пакетов и прочее в начале документа:
изложить по bib+cite
Почиташки: