RMarkdown

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すると、こんな感じのレポートが出来上がる。

r-child-1

出力を一切表示させずにスクリプトの実行だけを行いたい場合は、チャンクオプションで

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-child-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