可以在交互式 rmarkdown 文档中使用 knitr 缓存块吗?
Posted
技术标签:
【中文标题】可以在交互式 rmarkdown 文档中使用 knitr 缓存块吗?【英文标题】:Possible to use knitr cache chunk in interactive rmarkdown doc? 【发布时间】:2015-07-26 14:47:33 【问题描述】:我注意到,当我在 YAML 中有一个带有 runtime: shiny
的 Rmd 时,似乎没有从缓存中读取代码块。我想知道是否使用闪亮引擎进行 rmarkdown 只是不支持块缓存,还是我做错了什么?
示例 Rmd 文件:
---
title: "Cache test"
output: html_document
---
```r cache=TRUE
Sys.sleep(10)
```
如果你运行 5 次,只有第一次需要 10 秒,随后的任何运行都会很快。
但如果你在 YAML 中添加 runtime: shiny
选项,那么每次运行都需要 10 秒。
(PS 问题:有什么更好的方法来测试是否使用了代码块缓存?)
【问题讨论】:
【参考方案1】:我遇到了同样的问题,在 runtime: shiny
中,cache
开关被忽略了。
现在有一种解决方法,将runtime: shiny_prerendered
和context="data"
与cache=TRUE
一起使用:
---
title: "Cache test"
output: html_document
runtime: shiny_prerendered
---
```r,context="data", cache=TRUE
Sys.sleep(10)
```
这符合预期;第一次运行,渲染需要 10 秒;在所有后续运行中,都会使用缓存的块。
【讨论】:
是的,这个闪亮的预渲染是 rstudio 的一个很好的补充 :) @DeanAttali 如果有效,请不要忘记接受答案。以上是关于可以在交互式 rmarkdown 文档中使用 knitr 缓存块吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有 Shiny 的情况下过滤 Rmarkdown 中的预聚合数据?
在 rmarkdown 文档的 ggplot2 图表中嵌入字体
RMarkdown:使用 Rcpp 中的 rmarkdown:render-function 生成 pdf 文档
在 Word 文档中使用 DiagrammeR(使用 rMarkdown 生成)