11.5 複数の出力フォーマットに対してチャンクをキャッシュする

cache = TRUE でキャッシュが有効化されたとき, knitr は R コードチャンクで生成された R オブジェクトをキャッシュデータベースに書き込みます. これで次回から再読込ができます. キャッシュデータベースのパスはチャンクオプション cache.path によって決まります. R Markdown はデフォルトで出力フォーマットごとに異なるキャッシュのパスを使用するので, 時間のかかるコードチャンクは出力フォーマットごとに丸ごと実行されることになります. これは不便かもしれませんが, これがデフォルトの挙動であることには理由があります. コードチャンクの出力を, 固有の出力フォーマットによって決められるからです. 例えばグラフを生成した時, 出力フォーマットが word_document なら ![text](path/to/image.png) のような Markdown 構文で図を掲載できますし, 出力フォーマットが html_document なら <img src="path/to/image.png" /> が使えます.

コードチャンクにグラフなど副産物が一切ないときは, 全ての出力フォーマットで同じキャッシュデータベースを使っても安全であり, 時間を節約できます. 例えば大きなデータオブジェクトを読み込むか時間のかかるモデルを実行するかというときは, 結果は出力フォーマットに依存しませんので, 同じキャッシュデータベースを使うことができます. コードチャンクに cache.path を指定することでデータベースのパスを指定できます. これが例です.

```{r important-computing, cache=TRUE, cache.path="cache/"}
```

R Markdown ではデフォルトでは cache.path = "INPUT_cache/FORMAT/" で, INPUT には入力ファイル名が, FORMAT には html, latex, docx といった出力フォーマット名が入ります.