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个标题,每个标题下有一个图?
答案 0 :(得分:16)
您需要使用cat('\n')
在图表之后和标题之前添加一些新行:
```{r echo = FALSE, results ='asis'}
library(ggplot2)
for(Species in levels(iris$Species)){
cat('\n#', Species, '\n')
p <- ggplot(iris[iris$Species == Species,], aes(x = Sepal.Length, y = Sepal.Width)) +
geom_point()
print(p)
cat('\n')
}