--- title: "Язык разметки R Markdown и публикация документов с помощью RPubs" author: "Мармалюк П.А." date: "Москва, МГППУ, 2014" output: word_document --- ### *[R Markdown](http://rmarkdown.rstudio.com/)* - `R Markdown` - особый формат документирования (`.Rmd`), который позволяет создавать динамические документы - презентации и отчёты, включающих форматированный текст, рисунки, интерактивные графики, сложные формулы, а также результаты исполнения программного кода R. - Формат R Markdown помимо использования оригинального синтаксиса популярного формата markdown (`.MD`), включает также возможность встраивания блоков кода на языке R с выводом результатов их исполнения в итоговый `MD`, `HTML`, `PDF` или `DOC` файл. Документы в формате `RMD` - **динамические**, что означает автоматическое их обновление при изменении встроенного программного кода или входных данных. - При этом обеспечивается **воспроизводимость** результатов работы алгоритмов, поскольку корректно составленный документ RMD содержит не результаты вычислений, а программынй код, позволяющий воспроизвести алгоритм вычислений на любых данных. ### *Установка R Markdown* R Markdown можно установить двумя способами: - установить последнюю версию RStuido и создать документ через меню RStudio: `File -> New File -> R Markdown...` - напрямую в R, загрузив пакет `rmarkdown`: ```{r} require(rmarkdown) ``` ### *Синтаксис R Markdown* Ниже перечислены наиболее часто используемые элементы синтаксиса R Markdown. Более подробную информацию обо всех возможностях R Markdown читайте тут: [Pandoc markdown](http://rmarkdown.rstudio.com/authoring_pandoc_markdown.html) ### *Шрифты* `*курсив*` `**полужирный**` *курсив* **полужирный** `^^над^^строчный` ^^над^^строчный `за~~чёркнутый~~` за~~чёркнутый~~ ### *Заголовки* # Заголовок 1 ## Заголовок 2 ### Заголовок 3 ### *Неупорядоченные списки*: ``` * Item 1 * Item 2 + Item 2a + Item 2b ``` * Item 1 * Item 2 + Item 2a + Item 2b ### *Упорядоченные*: ``` 1. Item 1 2. Item 2 3. Item 3 + Item 3a + Item 3b ``` 1. Item 1 2. Item 2 3. Item 3 + Item 3a + Item 3b ### *Встраивание кода R* ```{r} summary(cars$dist) summary(cars$speed) ``` #### *Выполнение кода и возврат кода в строку* ``` заключаем строку кода R в апострофы: "`r`", ``` пример: Было исследовано "r nrow(cars)" машин" (следует добавить апострофы) результат: Было исследовано `r nrow(cars)` машин ### *Ссылки* - http-адрес страницы можно указать напрямую: http://it.mgppu.ru - или связав гиперссылку со словом или фразой: `[сайт факультета ИТ МГППУ](http://it.mgppu.ru)`: [сайт факультета ИТ МГППУ](http://it.mgppu.ru) ### *Вывод без форматирования* Включение содержимого документа в тройные апострофы ``` приводит к игнорированию синтаксиса R Markdown: Данный `текст` выводится *c* **форматированием** ``` Данный `текст` выводится *без* **форматирования** ``` ### *LaTeX-выражения* **`Важно!`**: для обработки выражений LaTeX на компьютере должна быть установлена подходящая система вёрстки (`LaTeX`, `MikTeX` и т.п.): - http://www.latex-project.org/ - http://miktex.org/ Выражение внутри строки: выражение `$y = x^2$` конвертируется в $y = x^2$ Вывод формул: ``` $$ f(x;\mu,\sigma^2) = \frac{1}{\sigma\sqrt{2\pi}}e^{-\left({x-\mu}\right)^2} $$ ``` $$ f(x;\mu,\sigma^2) = \frac{1}{\sigma\sqrt{2\pi}}e^{-\left({x-\mu}\right)^2} $$ ### *Вертикальная черта / отделение слайдов презентации* Три или более нижних подчёркивания или звёздочки: `---...-`, `***...*` позволяют либо вставить в документ вертикальную разбивающую черту, либо отделить один слайд презентации от другого. *** **Выделенный раздел документа** --- ### Новый слайд презентации --- ### *Изображения* `![global URL](http://it.mgppu.ru/i/logo.png)` ![global URL](http://it.mgppu.ru/i/logo.png) `![local file](logo.png)` ![local file](logo.png) ### *Перенос строки:* Два пробела после строки: ``` Строка 1 Строка 2 Строка 3 ``` Строка 1 Строка 2 Строка 3 ### ***Новый абзац*** Содержимое разбивается на отдельные абзацы с помощью пустой строки: ``` Строка 1 Строка 2 Строка 3 ``` Строка 1 Строка 2 Строка 3 ### ***Вывод графиков*** ```{r, warning=FALSE} plot(cars, main = "Зависимость длины тормозного пути от скорости автомобиля", ylab = "Длина тормозного пути", xlab = "Скорость автомобиля", cex.main = 1) ``` ### *Конвертация RMD в другие форматы* - RStudio: ![local file](KnitRStudioGUI.png) В папке, в которую сохранён редактируемый RMD файл, будет создан документ (HTML, PDF или DOC) с таким же именем. - Вручную в R: ``` require(knitr) knit2html("R_Markdown_and_RPubs.Rmd", encoding='UTF8') ``` ### *Публикация отчёта на RPubs.com* - RStudio: ![local file](PublishOnRPubsRStudioGUI.png) После авторизации можно опубликовать документ. **`Не всегда работает по неизвестным причинам!`** - Вручную в R: ``` require(markdown) rpubsUpload(title = "Additional material for 4th seminar", "R_Markdown_and_RPubs.Rmd", method = "internal") ```