为循环中生成的每个项创建新的RMarkdown块

时间:2018-04-17 01:50:38

标签: r r-markdown

我有一个非常相似的ggplot图表的动态数字,我正在进行RMarkdown Beamer演示。我希望每一个都出现在它自己的页面上,但它们目前粘在同一张幻灯片上(这是有意义的,这是预期的行为,但我仍然不确定如何为我的特定用例修复它)。这是一个例子:

---
title: "Test"
output: beamer_presentation
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
library(tidyverse)
```

## Page

```{r}
for(cyls in sort(unique(mtcars$cyl))) {
  print(mtcars %>%
    filter(cyl == cyls) %>% 
    ggplot(aes(x = mpg, y = hp)) +
    geom_point()+
    labs(title = paste(cyls,"cylinders")))
}

```

看起来像这样:

enter image description here

当我更喜欢这样的事情时:

enter image description here

我需要做些什么来改变这项工作?

1 个答案:

答案 0 :(得分:3)

使用results='asis'并在每个图之前和之后插入markdown语法:

```{r, results='asis'}
for(cyls in sort(unique(mtcars$cyl))) {
    cat(paste0("## ", cyls, " cylinders\n\n"))
    p = mtcars %>%
        filter(cyl == cyls) %>% 
        ggplot(aes(x = mpg, y = hp)) +
        geom_point() +
        labs(title = paste(cyls,"cylinders"))
    print(p)

    cat("\n\n---------------------\n\n")
}
```