将图形分开打印到 PDF 文件并同时输出 R Markdown

Printing graph to a PDF file apart and a R Markdown output at same time

假设我有这个功能来打印 PDF 文件中的绘图:

generatePlot<-function(values) {
  pdf(file = "foo.pdf")

  barplot(values, main = "A simple example")

  dev.off()
}

然后我在 "test.Rmd" 中执行此操作,参数化 r warning=FALSE, message=FALSE, echo=FALSE,这将输出一个 PDF 文档:

tmp.values <- sample(10, 6)
generatePlot(tmp.values)

问题是:剧情只出现在 "foo.pdf" 而不是 "test.pdf"。 在第二个中,我只观察到以下内容:

## pdf
## 2

要在两个文件中打印绘图,我需要做什么?

尝试以下操作:

---
title: "My HTML page"
output: pdf_document
---


```{r, warning=FALSE, message=FALSE, echo=FALSE}
generatePlot<-function(values) {
  barplot(values, main = "A simple example")
  dev.copy(pdf, "foo.pdf")
  invisible(dev.off()) 
}
```

```{r warning=FALSE, message=FALSE, echo=F}
generatePlot(mtcars$mpg)
```

如您所见,我正在使用 dev.copy 来确保绘图首先打印在默认设备上,然后复制到 pdf 设备,该设备将绘图保存在 Rmd 文档的位置。为了抑制 dev.off() 的输出,请使用 invisible().