我知道我可以使用cache=TRUE
选项使用带有knitr
的R Markdown来缓存R代码块。例如,它可能看起来像这样:
```{r longanalysis, cache=TRUE}
for (i in 1:5000) {
lm((i+1)~i)
}
```
我意识到如果我想为该分析禁用缓存,我可以将代码块中的选项更改为cache=FALSE
。但是,如果我有许多启用了缓存的R代码块,则需要仔细查找和替换操作。
cache=FALSE
? 我看过第一行的this example。所以我想这是一种设置全局设置的方法,但我认为本地设置会覆盖全局设置。
`r opts_chunk$set(fig.width=5, fig.height=5, fig.path='')`
答案 0 :(得分:33)
似乎默认设置为FALSE,本地块选项覆盖全局选项,但您可以做的一件事是将默认情况下的全局选项设置为缓存,方法是将其添加到文档顶部
`r opts_chunk$set(cache=TRUE)`
然后,对于您不希望缓存的部分,您将显式将这些部分设置为cache = FALSE。
然后,如果要将整个文档设置为不缓存任何内容,可以将全局选项更改为FALSE并重新运行。
问题是,如果任何块选项设置为cache = TRUE,那么这些选项将覆盖全局设置,如果将global选项设置为FALSE,则不会重新运行。所以我认为实现你想要的唯一方法是将默认值更改为cache = TRUE,显式设置你不希望缓存的块有缓存= FALSE,然后你可以将全局选项切换为FALSE来做什么你想要什么时候发生。
答案 1 :(得分:16)
knitr
创建一个目录来存储缓存的对象。默认情况下,它被称为cache
。
要确保无论代码块cache
设置如何都运行所有分析,只需删除缓存目录的内容。
因此,在Linux上的Rstudio
Tools - Shell
,在包含降价文件的工作目录中打开控制台。rm cache/*
这是我目前的基本工作流程
`r opts_chunk$set(cache=TRUE)`
添加到R Markdown文件中。dependson
option in knitr。命名还允许选择性删除缓存目录中的命名R代码块。答案 2 :(得分:12)
一旦您已经创建了文档,就太迟了,但是对于将来的文档,您可能需要考虑使用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
```
然后,您可以一次快速打开大量块的缓存。