【发布时间】:2017-09-30 19:34:52
【问题描述】:
Rmarkdown 中的results = 'asis' 块选项允许人们轻松地动态创建包含标题的文本。但是,我希望使用asis 选项动态创建一个标题,然后在同一个代码块中插入一些图形。
我能找到的最相关的答案在这里:Programmatically insert text, headers and lists with R markdown,但这个问题的答案不允许动态标题和这些动态标题中的图。
下面是一个简单的可重现示例,展示了我可以使用 results = 'asis' 实现什么和不可以实现什么
下面的代码符合我的预期,为每个物种创建了一个标头。
---
output: html_document
---
```{r echo = FALSE, results ='asis'}
for(Species in levels(iris$Species)){
cat('#', Species, '\n')
}
```
下面的代码没有做我想要的。理想情况下,下面的代码将为每个 Species 生成一个标题,每个标题下方都有一个图。相反,它会在输出文件中生成单个 setosa 标头,然后是三个图。
---
output: html_document
---
```{r echo = FALSE, results ='asis'}
library(ggplot2)
for(Species in levels(iris$Species)){
cat('#', Species, '\n')
p <- ggplot(iris[iris$Species == Species,], aes(x = Sepal.Length, y = Sepal.Width)) +
geom_point()
print(p)
}
```
有没有办法动态生成 3 个标题,每个标题下都有一个图?
【问题讨论】:
标签: r plot ggplot2 knitr r-markdown