Pokud jste vytvořili časově náročnější dokument v R Markdown, což se stává například při kreslení grafů či analýze většího množství dat, může být opakované vytváření html dokumentu obtěžující. Přitom ale potřebujete editovat text, opravovat překlepy apod. Pomocí jednoduchého triku můžete proces Knit HTML výrazně urychlit.
Stačí, když v hlavičce každé sekce kódu v R uvedete parametr cache=TRUE.
```{r, cache=TRUE}
náročné výpočty...
```
Pokud chcete tuto volbu nastavit hromadně pro všechny bloky kódu v celém dokumentu, použijte na začátku souboru následující zaklínadlo.
```{r setoptions, echo=FALSE}
library(knitr)
opts_chunk$set(cache=TRUE)
```
Všechny bloky se zapnutou cache se provedou jen jednou. Teprve, pokud v nich samotných uděláte změnu, spustí se znovu. Jinak budou brány jejich výstupy z cache.
Pokud chcete zaznamenat replikovatelný postup, použití R Markdown dokumentu je dobrým začátkem. Výhodou je, že kromě textu popisujícího experiment jsou zobrazeny i příkazy a jejich výstupy, takže si každý může postup zkontrolovat a případně sám znovu provést.
Problém ovšem je, že každý uživatel může mít trochu jinou verzi dílčích knihoven i samotného R. Přestože by většina základních postupů měla napříč různými verzemi knihoven poskytovat stejné výsledky, nemusí tomu tak být vždy. Proto je dobré uvést konkrétní verze všech částí, které jste k provedení programu použili. K tomu slouží následující příkaz.
sessionInfo()
## R version 4.3.1 (2023-06-16 ucrt)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 18363)
##
## Matrix products: default
##
##
## locale:
## [1] LC_COLLATE=Czech_Czechia.utf8 LC_CTYPE=Czech_Czechia.utf8
## [3] LC_MONETARY=Czech_Czechia.utf8 LC_NUMERIC=C
## [5] LC_TIME=Czech_Czechia.utf8
##
## time zone: Europe/Prague
## tzcode source: internal
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## loaded via a namespace (and not attached):
## [1] digest_0.6.32 R6_2.5.1 fastmap_1.1.1 xfun_0.39
## [5] cachem_1.0.8 knitr_1.43 htmltools_0.5.5 rmarkdown_2.23
## [9] cli_3.6.1 sass_0.4.6 jquerylib_0.1.4 compiler_4.3.1
## [13] rstudioapi_0.14 tools_4.3.1 evaluate_0.21 bslib_0.5.0
## [17] rlang_1.1.1 jsonlite_1.8.7
Výhodou je, pokud ho necháte přímo součástí R Markdown dokumentu, že bude vypisovat vždy ty verze knihoven, se kterými byl aktuální výsledný dokument vyroben.
Zkušení odborníci v něm pak najdou vše, co potřebují. Zvláště důležité je provedení tohoto příkazu v případě, že máte podezření na chybu v nějaké knihovně a žádáte o pomoc na internetových fórech. Uvést přesné verze použitých knihoven je pak naprostá samozřejmost.
Někdy bychom potřebovali obsah proměnné převést na programový kód, který by takovou proměnnou vytvořil. Slouží k tomu funkce dput().
datasets::islands
## Africa Antarctica Asia Australia
## 11506 5500 16988 2968
## Axel Heiberg Baffin Banks Borneo
## 16 184 23 280
## Britain Celebes Celon Cuba
## 84 73 25 43
## Devon Ellesmere Europe Greenland
## 21 82 3745 840
## Hainan Hispaniola Hokkaido Honshu
## 13 30 30 89
## Iceland Ireland Java Kyushu
## 40 33 49 14
## Luzon Madagascar Melville Mindanao
## 42 227 16 36
## Moluccas New Britain New Guinea New Zealand (N)
## 29 15 306 44
## New Zealand (S) Newfoundland North America Novaya Zemlya
## 58 43 9390 32
## Prince of Wales Sakhalin South America Southampton
## 13 29 6795 16
## Spitsbergen Sumatra Taiwan Tasmania
## 15 183 14 26
## Tierra del Fuego Timor Vancouver Victoria
## 19 13 12 82
dput(datasets::islands)
## c(Africa = 11506, Antarctica = 5500, Asia = 16988, Australia = 2968,
## `Axel Heiberg` = 16, Baffin = 184, Banks = 23, Borneo = 280,
## Britain = 84, Celebes = 73, Celon = 25, Cuba = 43, Devon = 21,
## Ellesmere = 82, Europe = 3745, Greenland = 840, Hainan = 13,
## Hispaniola = 30, Hokkaido = 30, Honshu = 89, Iceland = 40, Ireland = 33,
## Java = 49, Kyushu = 14, Luzon = 42, Madagascar = 227, Melville = 16,
## Mindanao = 36, Moluccas = 29, `New Britain` = 15, `New Guinea` = 306,
## `New Zealand (N)` = 44, `New Zealand (S)` = 58, Newfoundland = 43,
## `North America` = 9390, `Novaya Zemlya` = 32, `Prince of Wales` = 13,
## Sakhalin = 29, `South America` = 6795, Southampton = 16, Spitsbergen = 15,
## Sumatra = 183, Taiwan = 14, Tasmania = 26, `Tierra del Fuego` = 19,
## Timor = 13, Vancouver = 12, Victoria = 82)
© 5. 1. 2016 Tomáš Bořil, borilt@gmail.com