当从控制台调用时,为什么没有`knitr`使用与从IDE调用时相同的缓存?

时间:2017-12-01 09:01:36

标签: r caching knitr

当我在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
```

如果使用&#34;编织&#34;编译它,您将得到不同的结果。按钮或从控制台。

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

1 个答案:

答案 0 :(得分:1)

对于R Markdown文档,请勿拨打knitr::knit()而是rmarkdown::render() rmarkdown = knitr + Pandoc, rmarkdown 修改 knitr 中的几个默认块选项,包括{{1} } option(see source)。