24

I understand that I can use the cache=TRUE option to cache an R code chunk using R Markdown with knitr. E.g., It might look something like this:

```{r longanalysis, cache=TRUE}
for (i in 1:5000) {
    lm((i+1)~i)
}
```

And I realise that If I wanted to disable the cache for that analysis that I could change the option to cache=FALSE in the code chunk. However, if I have many R code chunks with caching enabled, this would require a careful find and replace operation.

Question

  • Is there a way of temporarily setting cache=FALSE for an entire R Markdown document?

Comments

I've seen this example where the first line is. So I imagine this is a way of setting global setting, but I think local settings override global settings.

`r opts_chunk$set(fig.width=5, fig.height=5, fig.path='')`
4

3 に答える 3

35

デフォルトはFALSEに設定されており、ローカルチャンクオプションはグローバルオプションをオーバーライドしているようですが、ドキュメントの先頭にこれを追加することで、グローバルオプションをデフォルトでキャッシュするように設定できます。

`r opts_chunk$set(cache=TRUE)`

次に、キャッシュしたくないセクションについては、それらのセクションを明示的にcache=FALSEに設定します。

次に、ドキュメント全体をキャッシュしないように設定する場合は、グローバルオプションをFALSEに変更して、再実行できます。

問題は、チャンクオプションのいずれかがcache = TRUEに設定されている場合、それらはグローバル設定を上書きし、グローバルオプションをFALSEに設定すると再実行されないことです。したがって、必要なことを実現する唯一の方法は、デフォルトをcache = TRUEに変更し、キャッシュしたくないチャンクを明示的にcache = FALSEに設定してから、グローバルオプションをFALSEに切り替えて何をするかを決めることだと思います。時間が発生したときに必要です。

于 2012-05-17T01:13:59.543 に答える
20

キャッシュ オプションの削除

knitrキャッシュされたオブジェクトを格納するディレクトリを作成します。デフォルトでは、 と呼ばれcacheます。cacheコード チャンクの設定に関係なく、すべての分析が確実に実行されるようにするには、キャッシュ ディレクトリの内容を削除します。

したがって、Linux の Rstudio では

  1. メニューに移動してTools - Shell、マークダウン ファイルを含む作業ディレクトリでコンソールを開きます。
  2. コマンドを入力しますrm cache/*

基本的なワークフロー

これが現時点での私の基本的なワークフローです

  • ニッティングが速い場合 (例: 10 秒未満)、キャッシュしないでください。
  • 編み物に時間がかかる場合 (例: 10 秒以上)、`r opts_chunk$set(cache=TRUE)`R Markdown ファイルに追加します。
  • キャッシュが原因で問題が発生し、ニッティングが比較的速い (たとえば、数分以内) 場合は、キャッシュ全体を削除します。
  • キャッシュが原因で問題が発生し、ニッティングに長時間 (たとえば、数分または数時間) かかる場合は、R コード チャンクに名前を付けてdependson、 Knitr のオプションを使用します。ネーミングにより、キャッシュ ディレクトリ内の名前付き R コード チャンクを選択的に削除することもできます。
于 2012-05-17T02:26:28.170 に答える
17

ドキュメントを作成したら遅すぎますが、将来のドキュメントでは、パラメータがによって評価されるという事実を使用することを検討することをお勧めしますknitr。これは、次のようなことができることを意味します。

```{r data.loading.chunk1, cache = cachedata}
blah blah
```
blah blah

```{r model.fitting.chunk1, cache = cachemodels}
blah blah
```

次に、ドキュメントの上部に次のようなものがあります。

```{r libraries.etc, echo=FALSE, results='hide', message=FALSE}
cachedata = TRUE
cachemodels = TRUE
```

これにより、一度に多数のチャンクのキャッシュをすばやくオフにすることができます。

于 2013-03-12T12:18:36.980 に答える