16.1 外部の R スクリプトを実行する
もし R Markdown 文書に大量のコードがあるなら, 以下の例のように, コードの一部を外部 R スクリプトに配置し, source()
か sys.source()
経由で実行するよう検討してください.
```{r, include=FALSE}
source("your-script.R", local = knitr::knit_global())
# または sys.source("your-script.R", envir = knitr::knit_global())
```
お薦めするやり方は, sys.source()
の envir
引数または source()
の local
引数を明示的に使い, コードが確実に適正な環境で評価されるようにすることです. これらのデフォルト値は適切な環境でないかもしれません. 間違った環境で変数を作成してしまい, その後のチャンクでオブジェクトが見つからず驚くということになりかねません.
それから, R Markdown 文書の中で, これらのスクリプトで作成された, データや関数といったオブジェクトを使えるのです. このやり方は R Markdown 文書が簡潔になるだけでなく, R コードの開発がもっと便利になるという効果もあります. 例えば R コードのデバッグは, R Markdown より, ピュアな R スクリプトでやるほうがたいてい簡単です.
上記の例では include = FALSE
を使っていることに注目してください. 出力を一切表示させずにスクリプトの実行するだけにしたいからです. 出力が欲しければこのチャンクオプションを削除するか, 11.7節で紹介したオプションを使って, 隠したり表示したりを出力の種類の違いによって選択することもできます.