R Markdown

Z WikiSkript

  • R Markdown je framework od tvůrců RStudia, který ve spolupráci s knihovnou Knitr umožní vytvořit reporty, výstupy R skriptů.
  • Více informací je dospozici na rmarkdown.rstudio.com. Na této adrese je k dispozici celý tutoriál, jehož upravenou verzi naleznete na této stránce.
  • Formáty výstupu: HTML, PDF, MS Word a mnoho dalších.

Jak to funguje[upravit | editovat zdroj]

  • Abychom mohli pracovat s R Markdownem, budeme potřebovat Pandoc.
  • Pokud hodláme zapisovat i vzorce, neobejdeme se bez Latexu, pro Windows je asi nejvhodnější Miktex.


Instalace frameworku

# To stačí udělat jednou před prvním použitím R Markdownu
install.packages("rmarkdown")

Vytvoření souboru s příponou "Rmd" (např. example.Rmd). Vložme do něj

---
title: "Viridis Demo"
output: html_document
---

```{r include = FALSE}
library(viridis)
```

The code below demonstrates two color palettes in the [viridis](https://github.com/sjmgarnier/viridis) package. Each plot displays a contour map of the Maunga Whau volcano in Auckland, New Zealand.

## Viridis colors

```{r}
image(volcano, col = viridis(200))
```

## Magma colors

```{r}
image(volcano, col = viridis(200, option = "A"))
```

Tento příklad potřebuje balíček viridis, musíme jej tedy nainstalovat install.packages("viridis").

Budeme-li chtít spustit tento kód z R skriptu, zapíšeme do něj

library(rmarkdown)
rmarkdown::render("example.Rmd", encoding = "UTF-8")

Užitečné je ovšem tlačítko Knitr v RStudiu, které nám zobrazí náhled otevřeného "Rmd" dokumentu.

Vidíme, že kód R Markdownu je kombinací textu, značek, které nám umožní dokument formátovat nebo vkládat výstupy R kódu.


Vnořený kód[upravit | editovat zdroj]

Do Rmd souboru můžeme vkládat programový kód v bloku i inline zápisem.

```{r include=FALSE}
tmp <- "Hello World"
```
Klasické zvolání u programovacích pokusů jako příklad inline vložení: `r print(tmp)`
Pozn. Místo {r} můžeme zadat i něco jiného. R Markdown totiž podporuje i další programovací jazyky (Python, SQL, Bash, JavaScript, CSS ... ). Více zde.


Argumenty {}[upravit | editovat zdroj]

  • include = FALSE - ve výsledném souboru nebude zobrazen kód ani jeho výstupy. Nicméně ty můžeme použít později
  • echo = FALSE - ve výsledném souboru nebude zobrazen kód, pouze jeho výstupy. Můžeme použít např. ke zobrazení grafu
  • message = FALSE - pokud provedený kód vygeneruje nějaká hlášení, nebudou ve výstupu zobrazeny
  • warning = FALSE - pokud provedený kód vygeneruje nějaká varování (něco shnilého v R kódu), nebudou ve výstupu zobrazeny
  • fig.cap = "..." - přidá popisek ke grafickému výstupu


Parametry[upravit | editovat zdroj]

V R Markdownu můžeme definovat parametry, které pak můžeme předat při renderování souboru.

---
title: "Zkoušíme parametry"
output: html_document
params:
  data1: "Výchozí parametr č.1"
  data2: "Výchozí parametr č.1"
---

Toto jsou předané parametry: ``r params$data1``, ``r params$data2``.

Pokud máme kód výše uložen v souboru parametry.Rmd, můžeme jej vykreslil následujícím příkazem:

# V pracovním adresáři se vytvoří (nebo přepíše) soubor "parametry.Rmd"
rmarkdown::render("parametry.Rmd", encoding = "UTF-8", params = list(data1 = "Nový parametr č.1", data2 = "Nový parametr č.2"))


Tabulky[upravit | editovat zdroj]

Budeme-li chtít zobrazit datovou tabulku nebo matici v renderovaném dokumentu, zobrazí se defaultně stejným způsobem, jak to vidíte v R konzoli.

S použitím funkce knitr::kable to může vypadat mnohem lépe.

---
title: "Table options"
output: html_document
---

Several packages support making beautiful tables with R, such as

* [xtable](https://cran.r-project.org/web/packages/xtable/)
* [stargazer](https://cran.r-project.org/web/packages/stargazer/)
* [pander](http://rapporter.github.io/pander/)
* [tables](https://cran.r-project.org/web/packages/tables/)
* [ascii](http://eusebe.github.io/ascii/)
* etc.

It is also very easy to make tables with knitr's `kable` function:

```{r echo = FALSE, results = 'asis'}
library(knitr)
kable(mtcars[1:5, ], caption = "A knitr kable.")
```


Základy značkovacího jazyka[upravit | editovat zdroj]

Syntaxe R Markdownu nabízí mnoho prostředků, jak formátovat text. Kdo to s tím myslí vážně, může se podívat na tuto stránku, která obsahuje kvalitní popis možností jazyka.

My si zde ukážeme jen pár základních věcí na příkladu.

---
title: "Markdown Demo"
output: html_document
---

Příklady formátování textu v Markdown:

# Header 1
## Header 2
### Header 3
#### Header 4

-----------------------

Tabulka:

| Plant | Temp. | Growth |
|:------|:-----:|-------:|
| A | 20 | 0.65 |
| B | 20 | 0.95 |
| C | 20 | 0.15 |

-----------------------

- *italics*
- **bold**
- `code`
- [links](rmarkdown.rstudio.com)

-----------------------

1. položka číslovaného seznamu 1 položka číslovaného seznamu 1 položka číslovaného seznamu 1 položka číslovaného seznamu 1 položka číslovaného seznamu 1 položka číslovaného seznamu 1 položka číslovaného seznamu 1
2. položka číslovaného seznamu 2

* položka nečíslovaného seznamu 1
* položka nečíslovaného seznamu 2

-----------------------

Latex výrazy

$A = \pi \times r^{2}$

$E = mc^{2}$


Výstupní formáty[upravit | editovat zdroj]

R Markdown umožní vytvoření nejen html výstupu, ale má mnoho dalších možností. Nás asi budou nejčastěji zajímat výstupy do HTML, MS Wordu, PDF.

Do čeho se nám dokument bude renderovat, můžeme určit v parametru output v hlavičce dokumentu. Vyzkoušejte následující příklad s tím, že budete postupně zadávat output: html_document, output: pdf_document,output: word_document.

---
title: "Table options"
output: html_document
---

Several packages support making beautiful tables with R, such as

* [xtable](https://cran.r-project.org/web/packages/xtable/)
* [stargazer](https://cran.r-project.org/web/packages/stargazer/)
* [pander](http://rapporter.github.io/pander/)
* [tables](https://cran.r-project.org/web/packages/tables/)
* [ascii](http://eusebe.github.io/ascii/)
* etc.

It is also very easy to make tables with knitr's `kable` function:

```{r echo = FALSE, results = 'asis'}
library(knitr)
kable(mtcars[1:5, ], caption = "A knitr kable.")
```


Renderujeme-li dokument voláním z R skriptu, bude to vypadat např. takto

# V pracovním adresáři bude vytvořen "docx" soubor
library(rmarkdown)
render("example.Rmd", encoding = "UTF-8", output_format = "word_document")
# Pokud nezadáme "output_format", použije se údaj v hlavičce dokumentu


Odkazy[upravit | editovat zdroj]