RMarkdownは多機能だけど、内容が増えたら、コードを外部の.rmdファイルや、他の.rファイルなどに配置し、チャンクで読み込むようにした方がなにかと便利。
見た目が簡潔になるし、Rコードのデバック等も、Rスクリプトでやるほうが簡単な場合が多い。
外部の RMarkdown ファイルをチャンク内で読み込む場合
子ファイルの RMarkdown (child) を作成
子ファイル (child) となるRMarkdownを作成する。
```{r c01}
# 子ファイルのRMarkdown(c01.rmd)
1 + 1
```
```{r c02, fig.height=4, fig.width=6}
# 子ファイルのRMarkdown(c02.rmd)
plot(1:20)
```
親ファイルの RMarkdown を作成
親となる RMarkdown を作成し、その中のチャンクで子ファイル(c01.rmd、c02.rmd etc.)を指定する。
# 計算
```{r child="c01.rmd"}
```
# プロット
```{r child="c02.rmd"}
```
knitすると、こんな感じのレポートが出来上がる。
出力を一切表示させずにスクリプトの実行だけを行いたい場合は、チャンクオプションで
include=FALSE
を指定すれば良い。
外部のRスクリプトをチャンク内で読み込む方法
Rスクリプトを作成・保存
Rスクリプトを作成し、各関数に
## ---- label_1 ----
のように名前をつけておく。
# ---- label_1 ----
1 + 1
# ---- label_2 ----
if (TRUE) {
plot(cars)
}
.r ファイルを RMarkdown ファイルと同じ場所する(e.g. "script.r" で保存)。
RMarkdown で読み込み
RMarkdownファイルのチャンク上で、knitrパッケージの
read_chunk()
を利用し、作成した .rファイル("script.r")を読み込む。
```{r}
library(knitr)
read_chunk("script.r")
```
```{r label_1}
```
```{r label_2}
```
こんな感じに出力される。
チャンクオプションで色々指定できる。
```{r, include=FALSE, cache=FALSE}
knitr::read_chunk("script.r")
```
```{r label_1, echo=FALSE}
```
```{r label_2, fig.height=4}
```
スクリプトは好きな数だけ読み込むことができる
スクリプトは好きな数だけ読み込める。
```{r, file=c('script1.R', 'script2.R')}
```
他のスクリプトも
他の言語スクリプトも同様にして読み込み可能。
Phythonスクリプト
```{python, file='script.py'}
```
C++スクリプト
```{Rcpp, file='source.cpp'}
```
References
今回と次回はR Markdownの文法として,ドキュメント部分の体裁を整えるための記法,コードチャンク処理制御,レポート出力制御,ファイル分割と統合,レポートのメタ情報の設定方法など,レポートづくりを更に効率化して,体裁をより良く整える方法について説明します。
本書は, 各種ツールを最大限活用するために役立つよう, あまり知られていない小ワザや簡潔で実践的な裏ワザの例を紹介します. 本書を読んだ後には, R Markdown 文書が, プレーンテキストから変換され, 処理の各ステップステップのほぼ全てで, どうカスタマイズするかが理解できることでしょう. 例えば, R コードから動的にコンテンツを作成する方法, 他の文書やチャンでコードを参照する方法, カスタマイズしたテンプレートでフォーマットを制御する方法, コードをちょっと調整する方法, 複数のプログラミング言語を分析に組み込む方法, といったことが学べるでしょう.