キャッシュにまつわるエトセトラ
前回の記事で紹介したように,cache=TRUE
を指定したコードチャンクでは,
通常はこれで充分ですが,
キャッシュのリフレッシュ
最も確実に全てのコードを再評価する方法は,cache.
で指定できます。R Markdownではデフォルトは.Rmdファイル名_cache
となっています。このディレクトリを削除すればキャッシュされたものがなくなってしまうので,
cache.extra
の利用
チャンクオプションが変更された場合もキャッシュは無効化されます。この仕組みを利用して,cache.
を一括指定することで,cache.
にRのバージョン文字列を指定しておけば,
```{r setup, include=FALSE}
# セットアップチャンク
library(knitr)
opts_chunk$set(cache.extra = R.version.string)
```
Rのバージョン文字列の代わりに,Sys.
)tools::md5sum('foo.
)
入力ファイルへの依存
大きなファイルの処理はコストがかかるので,cache.
を変更することも可能ですが,
このような場合,
```{r cache=TRUE, cache.e = tools::md5sum("foo.csv")}
# foo.csvに依存する処理
# x = read.csv("foo.csv")
# ...
```
これで,foo.
のmd5sumハッシュ値に変更があった時
チャンクの依存関係
コードチャンクAで作成したオブジェクトをコードチャンクBで使って処理する場合,dependson
に依存するチャンクのチャンクラベルc1
)c1
チャンクに変更があった時にc2
チャンクも再評価されます。
```{r c1, cache=TRUE}
a = 1
print(a)
```
```{r c2, cache=TRUE, dependson = "c1"}
# c1に変更があればこのチャンクも評価される
b = a + 2
print(b)
```
また,autodep
をTRUE
にすると,dependson
で明示するのが良いでしょう。
まとめ
今回の内容はやや高度だったかもしれません。このエトセトラを身に付ければR Markdown名人と言っても過言ではありません。きっと同僚から
また,
突然ですが,
今回紹介したレポートづくりのエトセトラを活用して仕事をさっさと終わらせて,
次回は
レポートといえば主役はグラフや表です。次回はR Markdownでグラフや表を効果的に扱う方法を紹介します。