Reputation: 34907
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.
cache=FALSE
for an entire R Markdown document?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='')`
Upvotes: 25
Views: 24078
Reputation: 8049
Too late once you've already created the document, but for future documents you might want to consider using the fact that the parameters are evaluated by knitr
. This means you can have things like:
```{r data.loading.chunk1, cache = cachedata}
blah blah
```
blah blah
```{r model.fitting.chunk1, cache = cachemodels}
blah blah
```
Then at the top of the document I have something like:
```{r libraries.etc, echo=FALSE, results='hide', message=FALSE}
cachedata = TRUE
cachemodels = TRUE
```
Which then allows you to quickly turn on an off cacheing for large numbers of chunks at a time.
Upvotes: 17
Reputation: 34907
knitr
creates a directory to store the cached objects. By default it is called cache
.
To ensure that all analyses are run regardless of the code chunks cache
setting, simply delete the contents of the cache directory.
Thus, in Rstudio on Linux
Tools - Shell
to open a console in the working directory containing the markdown file.rm cache/*
This is my basic workflow at the moment
`r opts_chunk$set(cache=TRUE)`
to the R Markdown file.dependson
option in knitr. Naming also permits selective deletion of named R code chunks in the cache directory.Upvotes: 21
Reputation: 61933
It seems the default is set to FALSE and local chunk options override the global options but one thing you could do is set the global options to cache by default by adding this to the top of your document
`r opts_chunk$set(cache=TRUE)`
Then for the sections you don't want cached ever you would explicitly set those sections to cache=FALSE.
Then if you want to set the whole document to not cache anything you could change the global option to FALSE and rerun it.
The problem is that if any of the chunk options are set to cache=TRUE then those will override the global setting and won't be rerun if you set the global option to FALSE. So I think the only way to achieve what you want is to change the default to cache=TRUE, explicitly set chunks that you don't want cached to have cache=FALSE, and then you can switch the global option to FALSE to do what you want when the time occurs.
Upvotes: 35