R Уценка нескольких участков в одном чанке работает только с перебоями - PullRequest
2 голосов
/ 11 апреля 2019

R кодовый блок # 1 правильно отображает «автомобили» и «давление». Я бы ожидал, что кодовый блок # 2 будет вести себя аналогично и дважды отобразить «давление». Это не так. Почему?

---
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)
```

intermittent r markdown multiple plots

1 Ответ

2 голосов
/ 12 апреля 2019

По умолчанию knitr отбрасывает последовательные идентичные графики в одном и том же фрагменте кода.Если вы хотите сохранить все из них, вы можете использовать параметр чанка fig.keep = 'all', например,

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

Что касается причины, см. (Старое) руководство https://yihui.name/knitr/demo/manual/ (раздел 3.2.).Короче говоря, knitr делает снимок текущего графического устройства после оценки каждого выражения в фрагменте кода (независимо от того, имеет ли выражение какое-либо отношение к построению графика) и проверяет, есть ли какие-либо изменения в снимке,Если моментальный снимок остается идентичным предыдущей версии, предполагается, что новый график не был создан.Вы можете заставить knitr сохранить все графики, даже если они идентичны, с помощью fig.keep = 'all'.

...