Jon*_*nny 5 r ggplot2 knitr r-markdown tidyverse
我正在 RMarkdown 文档中的循环内创建一系列绘图,然后将其编织成 PDF。我可以毫无问题地做到这一点,但我希望标题能够反映每个图之间的变化。MWE 如下所示:
---
title: "Caption loop"
output: pdf_document
---
```{r, echo=FALSE}
library(tidyverse)
p <-
map(names(mtcars), ~ggplot(mtcars) +
geom_point(aes_string(x = 'mpg', y = .))) %>%
set_names(names(mtcars))
```
```{r loops, fig.cap=paste(for(i in seq_along(p)) print(names(p)[[i]])), echo=FALSE}
for(i in seq_along(p)) p[[i]] %>% print
```
Run Code Online (Sandbox Code Playgroud)
我第一次尝试捕获绘图并将其存储在变量中p
,并尝试使用它来生成标题,但这不起作用。尽管这肯定是很多人需要做的事情,但我在 SO 上还没有找到太多相关信息。我确实找到了这个问题,但它看起来太复杂了,我想知道是否有一个我缺少的清晰而简单的解决方案。
eval.after
我想知道它是否与此问题有关,但这不涉及循环内生成的图。
非常感谢您的帮助!
看起来它knitr
足够聪明,可以自动完成任务。通过添加names(mtcars)
图形标题,knitr 依次迭代这些标题以生成正确的标题。现在唯一的问题是如何阻止所有列表索引在文档中打印......
---
title: "Caption loop"
output: pdf_document
---
```{r loops, fig.cap=paste("Graph of mpg vs.", names(mtcars)), message=FALSE, echo=FALSE, warning=FALSE}
library(tidyverse)
map(
names(mtcars),
~ ggplot(mtcars) +
geom_point(aes_string(x = 'mpg', y = .))
)
```
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1832 次 |
最近记录: |