R Markdown 单个块中的多个图只能间歇性工作

R Markdown multiple plots in a single chunk only works intermittently

R 代码块 #1 正确绘制了 'cars' 和 'pressure'。我希望 code chunk #2 的行为相似并绘制 'pressure' 两次。它没有。为什么?

---
title: "Untitled"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

Text

```{r code chunk 1, echo=FALSE, fig.width=6, fig.asp=0.618, out.width="50%", fig.align="default"}
plot(cars)
plot(pressure)
```

Text

```{r code chunk 2, echo=FALSE, fig.width=6, fig.asp=0.618, out.width="50%", fig.align="default"}
plot(pressure)
plot(pressure)
```

默认情况下,knitr 丢弃同一代码块中的连续相同图。如果你想保留所有这些,你可以使用块选项 fig.keep = 'all',例如,

```{r code chunk 2, fig.keep='all'}
plot(pressure)
plot(pressure)
```

至于原因,参见(旧)手册https://yihui.name/knitr/demo/manual/(第3.2节)。简而言之,knitr 在对代码块中的每个表达式求值后捕获当前图形设备的快照(无论表达式是否与绘图有关),并查看是否有快照中的更改。如果快照与以前的版本保持一致,则假定没有生成新图。您可以通过 fig.keep = 'all'.

强制 knitr 保留所有地块,即使它们彼此相同