可以在交互式 rmarkdown 文档中使用 knitr 缓存块吗?

Possible to use knitr cache chunk in interactive rmarkdown doc?

我注意到当我在 YAML 中有一个带 runtime: shiny 的 Rmd 时,代码块似乎没有从缓存中读取。我想知道是否使用闪亮的 rmarkdown 引擎不支持块缓存,还是我做错了什么?

示例 Rmd 文件:

---
title: "Cache test"
output: html_document
---

```{r cache=TRUE}
Sys.sleep(10)
```

如果你运行这5次,只有第一次需要10秒,以后的运行会很快。

但是如果您将 runtime: shiny 选项添加到 YAML,那么每个 运行 将花费 10 秒。

(PS问题:有没有更好的方法来测试是否正在使用代码块缓存?)

i 运行 遇到同样的问题,在 runtime: shiny 中忽略了 cache 开关。

现在有一个解决方法,使用 runtime: shiny_prerenderedcontext="data" 以及 cache=TRUE:

---
title: "Cache test"
output: html_document
runtime: shiny_prerendered
---

```{r,context="data", cache=TRUE}
Sys.sleep(10)
```

这符合预期;在第一个 运行 上,渲染需要 10 秒;在所有后续的 运行 中,使用缓存的块。