当编织 R markdown 文件时,从带有 cache=TRUE
的任何 block 输出的绘图将独立于 HTML 输出保存。这对我来说很有意义。但是,即使单个 block 设置了 cache=TRUE
选项,所有 block (包括那些带有 cache=FALSE
的 block )都会保存其绘图独立。例如,以下代码保存两个 block 的图像文件:
---
title: "Cache Plot Test"
output:
html_document:
df_print: paged
---
```{r test_plot1, cache = FALSE}
library(ggplot2)
ggplot(airquality, aes(x = Temp, y = Wind)) +
geom_point()
```
```{r test_plot2, cache = TRUE}
library(ggplot2)
ggplot(airquality, aes(x = Month, y = Ozone)) +
geom_point()
```
如果有人想在特定 block 上实现缓存但又不想独立保存输出中的每个图,有什么方法可以防止这种情况发生?如果没有这样的选项并且这是设计使然,那么理由是什么?为什么需要从未实现缓存的 block 中保存绘图?
最佳答案
绘图始终写入文件。可以看到,对于缓存 block ,重新编织文档时图像没有被修改,但非缓存 block 中的图像被重写(检查修改日期)。 R 不会重新运行为缓存 block 生成图像的代码。如果您没有启用任何缓存,rmarkdown 将在运行后“清理”并删除所有图像。但由于 rmarkdown 不会跟踪每个 block 级别的副作用,因此当启用缓存时,它无法再自行清理,因为它不知道哪些图像来自哪个 block 。所以这可以保证他们所有人的安全。
关于r - 在 R markdown 中,如何防止非缓存 block 的绘图被单独保存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70270796/