r语言 - 为什么从控制台调用"knitr"时不使用与从 IDE 调用时相同的缓存?



当我在 RStudio 中编织文档(通过单击"Knit")按钮时,会创建一个以文件名命名的缓存文件夹,${filename}_cache.

我希望能够检查编译创建的对象,并将它们放在我的工作区中。为此,我从控制台调用knit()

knit("filename.Rmd")

工作区现在包含所有对象,但这样做会创建一个名为cache/的缓存。

我试图欺骗 knitr 使用相同的带有选项的缓存名称:

opts_chunk$set(cache.path = "filename_cache/")

现在似乎使用相同的缓存目录,但从命令行调用knit()似乎会使单击"Knit"按钮时创建的缓存无效。

例如,如果您有此文档,另存为cache.Rmd

```{r}
library(knitr)
opts_chunk$set(cache.path = "cache_cache/")
```
```{r, cache=TRUE}
foo <- rnorm(10)
foo
```

如果您使用"Knit"按钮或从控制台编译它,您将获得不同的结果。

有没有办法使用相同的缓存,独立于knit()的调用方式?

对于 R Markdown 文档,不要调用knitr::knit(),而是rmarkdown::render()rmarkdown= knitr +Pandoc,rmarkdown修改了knitr中的几个默认块选项,包括cache.path选项(见源代码)。

最新更新