Еще не прошло и двух лет, как Илья Щуров сказал мне про RMarkdown. С тех пор и не счесть, сколько всего я этим пакетом сделал. Лучше места и повода поблагодарить Илью, наверное, не найти.
rmarkdown
install.packages("rmarkdown")
Создайте файл .Rmd в какой-нибудь папке. Скомпелировать файл можно командой:
rmarkdown::render("ваш_файл.Rmd")
или кнопочкой Knit.
---
output: html_document
---
## Данные
В документе можно вставлять R код
```{r}
summary(iris)
```
## График
И строить графики
```{r}
plot(iris$Sepal.Length)
```
Markdown
Универсальны язык разметки, работает во многих современных он-лайн системах создания текста.
## Заголовок уровня 2
#### Заголовок уровня 4
_италик_ или *другой италик*
__жирный__ или **другой жирный**
~~зачеркивание~~
италик или другой италик
жирный или другой жирный
зачеркивание
* кролик
* заяц
* заяц серый
1. машины
1. автобус
2. самолеты
+ можно еще ставить плюс
- и минус
[Ссылка 1](https://agricolamz.github.io/2018_ANDAN_course_winter/2_ex.html)
<https://agricolamz.github.io/2018_ANDAN_course_winter/2_ex.html>
[Можно вставить ссылку потом, а пока отсавить метку][1]
Или даже просто голую [метку].
![](https://raw.githubusercontent.com/agricolamz/2018_ANDAN_course_winter/master/rmarkdown.png)
Опять же можно вставить только метку ![][2]
[1]: https://agricolamz.github.io/2018_ANDAN_course_winter/2_ex.html
[метку]: https://agricolamz.github.io/2018_ANDAN_course_winter/2_ex.html
[2]: https://raw.githubusercontent.com/agricolamz/2018_ANDAN_course_winter/master/rmarkdown.png
https://agricolamz.github.io/2018_ANDAN_course_winter/2_ex.html
Можно вставить ссылку потом, а пока отсавить метку
Или даже просто голую метку.
Опять же можно вставить только метку
Код нужно оформалять вот так `rmarkdown::render()`
Код нужно оформалять вот так rmarkdown::render()
```{python}
friends = ['john', 'pat', 'gary', 'michael']
for i, name in enumerate(friends):
print "iteration {iteration} is {name}".format(iteration=i, name=name)
```
friends = ['john', 'pat', 'gary', 'michael']
for i, name in enumerate(friends):
print "iteration {iteration} is {name}".format(iteration=i, name=name)
iteration 0 is john
iteration 1 is pat
iteration 2 is gary
iteration 3 is michael
Фигурные скобки не обязательны, но тогда RStudio подсветит.
> Цитаты нужно офрмлять так.
> Это попадет в тот же фрагмент.
> А вот тут произошел разрыв. Кстати, здесь тоже можно использовать *markdown*.
Цитаты нужно офрмлять так. Это попадет в тот же фрагмент.
А вот тут произошел разрыв. Кстати, здесь тоже можно использовать markdown.
***
<dl>
<dt>Чистый HTML</dt>
<dd>Еще можно писать в HTML.</dd>
<dt>и Markdown в HTML </dt>
<dd> даже работает **правильно**. Но можно использовать и <em>теги</em>.</dd>
</dl>
Еще есть целая наука как делать таблицы в Markdown, но я предпочитаю использовать он-лайн генератор.
Pandoc
Pandoc
это программа, созданная Дж. МакФарлэйном (J. MacFarlane), которая позволяет переходить из разных текстовых форматов в другие, а также смешивать их. Я покожу лишь несколько полезных расширений.
2^10^ C~n~^k^
210 Cnk
(@) Славный пример номер раз.
(@) Славный пример номер два.
(@three) Славный пример номер три, у которого есть *имя*.
Я могу сослаться на пример (@three)!
Я могу сослаться на пример (3)!
$\LaTeX$ код может быть в тексте $\frac{\pi}{\sum{n+1}}$ или отдельной строчкой:
$$\frac{\pi}{\sum{n+1}}$$
\(\LaTeX\) код может быть в тексте \(\frac{\pi}{\sum{n+1}}\) или отдельной строчкой:
\[\frac{\pi}{\sum{n+1}}\]
Фрагменты кода имеют свои наборы свойств, который можно записывать в фигурных скобках.
```{r}
summary(cars)
```
```{bash}
mkdir my_new_folder
ls
rm -d my_new_folder
```
```{python}
x = "my string"
print(x.split(" "))
```
И код, и результат
```{r}
plot(mtcars$mpg)
```
Только результат
```{r, echo = FALSE}
plot(mtcars$mpg)
```
Только код
```{r, eval = FALSE}
plot(mtcars$mpg)
```
Исполняется, но не показывается ни код, ни результат
```{r, include = FALSE}
a <- mtcars$mpg
```
Обратимся к переменной, созданной в фрагменте с аргументом `include = FALSE`
```{r}
a
```
Существует достаточно много аргументов, которые можно перечислить в фигурных скобках в фрагменте кода, вот некоторые из них:
error
: показывать ли ошибки.warning
: показывать ли предупреждения.message
: показывать ли сообщения (например, при подключении пакетов).comment
: по умолчанию, результат работы кода предваряется знаком ##
, используйте NA
, чтобы их не было, или любую другую строку.cache
: сохранить ли результат работы фрагмента кода. Очень полезно, если происходят какие-то операции, занимающая много времени. Сохранив результат, не нужно будет тратить время, на пересчет, при каждой новой компиляции.fig.width
, fig.height
(по умолчанию, 7)Все эти аргументы можно перечислить в функции knitr::opts_chunk$set(...)
:
```{r, include=FALSE}
knitr::opts_chunk$set(echo = FALSE, message = FALSE, fig.height = 3)
```
Первый фрагмент
```{r}
library(tidyverse)
diamonds %>%
count(carat, color) %>%
ggplot(aes(carat, n, color = color))+
geom_point()
```
Второй фрагмент
```{r}
diamonds %>%
count(cut, color) %>%
ggplot(aes(cut, n, color = color))+
geom_point()
```
В RMarkdown каждому фрагменту кода можно дать имя (но избегайте пробелов и точек):
```{r my_beautiful_graph, eval = FALSE}
library(tidyverse)
diamonds %>%
count(carat, color) %>%
ggplot(aes(carat, n, color = color))+
geom_point()
```
Maëlle Salmon написал отличный пост, почему полезно именовать фрагменты кода:
blogdown
можно ссылатьсяФакультативная YAML шапка обычно содержит метаданные документа, и аргументы, необходимые для работы некоторых дополнений.
---
title: "Мой RMarkdown"
author: Айс Дан
date: 5 января 2018
---
output: html_document
(по умолчанию)output: word_document
output: pdf_document
(но нужно договориться с \(\LaTeX\)ом на вашем компьютере)output: ioslides_presentation
output: slidy_presentation
output: slidy_presentation
output: beamer_presentation
и др.
Существует несколько сопособов вставлять библиографию в RMarkdown. Я раскажу, как использовать пакет Bibtex
(как видно из названия, сделанный для \(\LaTeX\)). Для начала нужно создать файл с раширением .bib, в который записать все источники, которые будут использоваться (библиографию в формате BibTeX
выдает, например, GoogleScholar):
@book{ladefoged96,
title={The sounds of the world's languages},
author={Ladefoged, P. and Maddieson, I.},
year={1996},
publisher={Oxford Publishers}
}
@article{gordon02,
title={A cross-linguistic acoustic study of voiceless fricatives},
author={Gordon, M. and Barthmaier, P. and Sands, K.},
journal={Journal of the International Phonetic Association},
volume={32},
number={2},
pages={141--174},
year={2002},
publisher={Cambridge University Press}
}
На следующем шаге нужно добавить название файла с раширением .bib в YAML шапку:
---
bibliography: bibliography.bib
---
После этого, можно использовать сслыки в тексте
В своей работе @gordon02 раскрыл...
В своей работе Gordon, Barthmaier, and Sands (2002) раскрыл…
Об этом можно узнать из [@ladefoged96; @gordon02], но ...
Об этом можно узнать из (Ladefoged and Maddieson 1996; Gordon, Barthmaier, and Sands 2002), но …
В своей работе [@gordon02] раскрыл...
В своей работе (Gordon, Barthmaier, and Sands 2002) раскрыл…
Об этом можно узнать из [см. @gordon02, с. 33--35; а также @ladefoged96, гл. 1]...
Об этом можно узнать из (см. Gordon, Barthmaier, and Sands 2002, с. 33–35; а также Ladefoged and Maddieson 1996, гл. 1)…
Список литературы автоматически появляется в конце.
Существует сразу несколько аргументов, отвечающих за оглавление.
toc
вставлять ли оглавлениеtoc_depth
глубина иерархии, которую отражать в огловленииtoc_float
должно ли оглавление все время следовать за текстомcollapsed
должно ли оглавление быть все время полностью раскрытоcollapsed
должно ли оглавление быть все время полностью раскрытоnumber_sections
автоматическая нумерация секцийcode_folding
(hide) — делать ли кнопочку, показывающую/скрывающую весь кодtheme
одна из Bootstrap темhighlight
: “default”, “tango”, “pygments”, “kate”, “monochrome”, “espresso”, “zenburn”, “haddock” или “textmate”---
html_document:
theme: spacelab
highlight: pygments
toc: yes
toc_position: right
toc_depth: 3
toc_float: yes
smooth_scroll: false
---
df_print: default
df_print: kable
df_print: tibble
df_print: paged
---
output:
html_document:
df_print: paged
---
---
output:
html_document:
css: styles.css
---
Если хочется совсем все взять из .css файла, то нужно добавить в YAML шапку аргументы theme: null
и highlight: null
.
Существует много разных пакетов, которые интегрируют возможности уже написанных java-script библиотек в R. Все это возможно благодоря пакету htmlwidgets
, который соединяет R и JavaScript. Здесь приведены лишь несколько примеров, больше примеров можно найти здесь.
DT
library(DT)
datatable(mtcars)
У меня была вот такая проблема. Устанавливайте версию с гитхаба:
devtools::install_github("rstudio/DT")
leaflet
library(leaflet)
leaflet() %>%
addTiles() %>%
addPopups(37.168254, 55.408408,
'Мы возможно <b>здесь</b>')
plotly
library(ggplot2)
library(plotly)
mtcars %>%
ggplot(aes(mpg, hp)) +
geom_point()+
geom_smooth(method = "lm")+
theme_bw()->
my_plot
ggplotly(my_plot)
visNetwork
library(visNetwork)
nodes <- data.frame(id = 1:3)
edges <- data.frame(from = c(1,2), to = c(1,3))
visNetwork(nodes, edges)
Gordon, M., P. Barthmaier, and K. Sands. 2002. “A Cross-Linguistic Acoustic Study of Voiceless Fricatives.” Journal of the International Phonetic Association 32 (2). Cambridge University Press: 141–74.
Ladefoged, P., and I. Maddieson. 1996. The Sounds of the World’s Languages. Oxford Publishers.
Сноска, сноска, сноска.↩