RStudio

R Markdown で使用するチャンクには、

{r チャンク名}

でチャンク名をつける事ができます。

ほとんどの場合、チャンク名をつけなくても問題はないのですが、

cache オプションをつけるときには、チャンク名が重要な意味を持ってきます。

cache オプションとは

cache オプションは「処理結果を保存する」という意味です。

チャンクのコードは、Knitする度に計算されます。

もし、演算にかなりの時間を費やすコードが含まれている場合、Knitの時間も長くなるので、

そんなときに

cache = TRUE

オプションをつけておくと計算時間を短縮できます。

最初のKnit時に結果をファイルとして保存し、次回からはその結果を読み込むだけ、という形にするからです。

チャンク内のコードが修正された場合、Knit時にもう一度処理を行います。

ここで、チャンク名を入れていなかったら……

チャンク名がない場合の例:
```{r}
X <- c(1, 4, 5, 8, 10, 13)
```

```{r, cache=TRUE}
sum(X)
```

この構造自体に問題はありません。

コンソールには

[1] 41

と出てきます。

ところが、ここで

X

の値を

i <- c(1, 4, 6, 8, 10, 13)

に変更してもう一度 Knit を行った場合、コンソールの答えは

[1] 41

のままです。

それは、2番めのチャンクの結果はすでに保存されており、コードも修正していないから。

dependson オプション

このように、あるチャンクの内容が他のチャンクの内容に依存している場合、

dependson

オプションを使います。

1番目にチャンク名をつけ、それに依存するチャンクに

dependson = "チャンク名"

とつければOK

チャンク名をつけ、dependsonを適用
```{r name_X}
X <- c(1, 4, 5, 8, 10, 13)
```

```{r, cache=TRUE, dependson = "name_X"}
sum(X)
```
X

の中身を変更すると、それに依存するチャンクで

cache = TRUE

でも再計算を行います。

チャンク名はdependsonオプションで必要

上記のように、dependsonオプションを使う時にチャンク名が必要となります。

cacheを使用するときにはつけておきたいオプションです。

Reference

にほんブログ村 科学ブログ 脳科学へ
にほんブログ村 子育てブログ ワーキングマザー育児へ