我正在使用 RStudio 的“预览”版本,并且
我有一个 Rmd
文件,用于生成 html、pdf
和 docx
文档。我已经设置了这样的选项:
opts_chunk$set(cache=TRUE, comment="",message=FALSE, warning = FALSE)
cache=TRUE
在我尝试重新创建具有相同扩展名 eg.htm
的文档时效果很好,但如果我尝试使用相同的 Rmd
文件来创建 pdf
或 docx
文档,然后缓存的图形不会被重新使用并且执行速度非常慢。有没有办法为不同类型的文档重新使用缓存的图形?请考虑以下最小示例:
{r,echo=FALSE}
library(knitr)
opts_chunk$set(cache=TRUE, comment="",message=FALSE, warning = FALSE)
{r, echo=FALSE}
plot(cars)
如果我选择 knit html
选项,它会创建 html 文档并重新使用代码,但单击 knit pdf
,cache=TRUE
被忽略。显然,这个最小的例子并不明显,但使用我的文件和大约 30 个图形,它完全减慢了速度。
最佳答案
这是因为 rmarkdown 包为不同的输出格式设置了不同的 block 选项,例如PDF 输出使用 block 选项 dev='pdf'
,HTML 输出使用 dev='png'
。更改 block 选项将使缓存失效。
你可以做的一件事是为不同的输出格式创建不同的缓存目录,例如
```{r setup, include=FALSE}
library(knitr)
local({
to = opts_knit$get('rmarkdown.pandoc.to') # output format
opts_chunk$set(cache.path = paste('cache', to, sep = '_'))
})
```
请注意,这只会确保缓存分别适用于输出格式。你不能跨不同的输出格式共享缓存数据库,除非你为所有输出格式设置相同的 block 选项,这是不切实际的,所以我想你必须接受这个次优的解决方案。
关于r - 跨不同文档类型缓存 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23050320/