我正在使用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个图形,它完全变慢了。
答案 0 :(得分:2)
这是因为 rmarkdown 包为不同的输出格式设置了不同的块选项,例如PDF输出使用块选项dev='pdf'
,HTML输出使用dev='png'
。块选项的更改将使缓存无效。
您可以做的一件事是为不同的输出格式创建不同的缓存目录,例如
```{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 = '_'))
})
```
请注意,这只会确保缓存分别适用于输出格式。您不能跨不同的输出格式共享缓存数据库,除非您为所有输出格式设置相同的块选项,这是不切实际的,所以我猜你必须接受这个次优解决方案。
答案 1 :(得分:0)
尝试 cache=1 而不是 cache=T。 请参阅the cache invalidation rules。