16.3 外部スクリプトから複数のコードチャンクを読み込む (*)

16.2節では, コードを単一のチャンクに読み込む方法を紹介しました. この節では外部スクリプトから複数のチャンクを読み取る方法を1つ紹介します. ポイントは, スクリプト内のコードにラベルを付ける必要がありますが, 同じラベルを R Markdown 文書のコードチャンクにも使用できるという点です. つまり外部スクリプトのコードを knitr::read_chunk() 関数を介して各コードチャンクに展開できるのです. スクリプトのブロックにラベルを付けるには, ## ---- の後にラベルを書きます (行の終わりにも好きな数のダッシュ記号を続けることができます). 例えば次のように, 1つのスクリプトにはラベル付けされたブロックを複数含めることができます.

## ---- test-a --------
1 + 1

## ---- test-b --------
if (TRUE) {
  plot(cars)
}

上記のスクリプトのファイル名が test.R であるとします. R Markdown 文書ではこれを knitr::read_chunk() 関数で読み込み, コードチャンク内ではそのコードをラベルで使えます. これが例です.

外部スクリプトを読み込む

```{r, include=FALSE, cache=FALSE}
knitr::read_chunk('test.R')
```

これで, 例えばこのようにコードを使用できる

```{r, test-a, echo=FALSE}
```

```{r, test-b, fig.height=4}
```

コードチャンクの副産物にも影響するというのが主な理由ですが knitr::read_chunk() を使っていることに注意してください. つまりこの関数を読み込んだコードチャンクがキャッシュされていないことを確認してください (この説明は11.4節参照).

16.1, 16.2節で紹介したように, この方法は別の環境でコード開発できるという柔軟性をもたらしてくれます.