Как создать подраздел в R markdown

Я пытаюсь создать метку R, как показано ниже. В векторе, называемом app, у меня будет несколько приложений, пойдет и создаст pdf файл

---
title: "Java Based Apps"
date: "January 13, 2017"
output: 
  pdf_document: 
    number_sections: yes
    toc: true
    highlight: zenburn
    fig_width: 7
    fig_height: 6
    fig_caption: true

tables: yes
keep_tex: true
fontsize: 12
---



```{r message=FALSE, results = 'asis', echo=FALSE, warning=FALSE}

app<-c("Sample APP")

for (i in app){

    cat(paste("## ", "- Correlation Analysis between performance KPI's"))
    cat("\n")
    m<-corrplot(M, method="number")

    cat(paste("## ", "- JVM %CPU Usage"))
    cat("\n")

    print(ggplot(data, aes(Date, JVM_CPU, group=JVM))+geom_point()+geom_smooth(method="lm",se=F)+theme_bw()+
    ggtitle(paste(i, " - JVM %CPU Usage/15 Minute Interval"))+facet_wrap(~JVM, scale="free"))

    cat(paste("## ", "- JVM Heap Usage"))
    cat("\n")

    print(ggplot(data, aes(Date, JVM_Mem, group=JVM))+geom_point()+geom_smooth(method="lm",se=F)+theme_bw()+
    ggtitle(paste(i, " - JVM Memory Usage/15 Minute Interval"))+facet_wrap(~JVM, scale="free")+ylab("Memory Usage/MG"))

 }
```

вывод должен быть таким:

Sample App
   - Correlation Analysis between performance KPI's
   - JVM %CPU Usage
   - JVM Heap Usage

и т.д.

Я вижу это:

Sample App
   - Correlation Analysis between performance KPI's

но другие не создаются как подразделы. Любая идея, что я делаю неправильно здесь?

Ответ 1

Если вы разделите проблему, это будет проще. Я создал некоторые фиктивные данные.

У вас может быть main.Rmd, где вы запускаете цикл for, например:


title: "Java Based Apps"
date: "January 13, 2017"
output: 
  pdf_document: 
    number_sections: yes
    toc: true
    highlight: zenburn
    fig_width: 7
    fig_height: 6
    fig_caption: true
tables: yes
keep_tex: true
fontsize: 12
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = F, message = F, warning = F)
library(tibble)
library(lubridate)
library(dplyr)
library(corrplot)
library(ggplot2)
library(knitr)
# Create some sample data
set.seed(2887)
data <- tibble(
  app = sort(rep(c("sample app", "sample app 2"), 500))
  , Date = rep(seq(now() - as.difftime(7, unit="days"), now(), length.out = 500), 2)
  , JVM = sample(c("a", "b", "c"), size = 1000, replace = T)
  , JVM_CPU = runif(1000, 0, 100)
  , JVM_Mem = runif(1000, 0, 100)
)
```

```{r}
app <- sort(unique(data$app))

out <- NULL
for (i in app){
  data.filtered <- dplyr::filter(data, app == i)
  out <- c(out, knit_child('app_template.Rmd', quiet = TRUE))
}
```

`r paste(out, collapse='\n')`

Вы будете перебирать шаблон, который я здесь называл app_template.Rmd, и выглядит так (обратите внимание, что он не имеет yaml:

\pagebreak

# `r i`

## Correlation Analysis between performance KPI's

```{r, fig.width=5, fig.height=5}
m <- matrix(rnorm(1000), ncol = 10)
M <- cor(m)
corrplot(M, method="number")
```

## JVM %CPU Usage

```{r, fig.width=10, fig.height=5}
ggplot(data.filtered, aes(Date, JVM_CPU, group=JVM)) +
  geom_point() +
  geom_smooth(method = "lm", se = F) + 
  theme_bw() +
  ggtitle(paste(i, " - JVM %CPU Usage/15 Minute Interval")) + 
  facet_wrap(~ JVM, scale = "free")
```

## JVM Heap Usage

```{r, fig.width=10, fig.height=5}
ggplot(data.filtered, aes(Date, JVM_Mem, group = JVM)) + 
  geom_point() + 
  geom_smooth(method = "lm", se = F) + 
  theme_bw() +
  ggtitle(paste(i, " - JVM Memory Usage/15 Minute Interval")) + 
  facet_wrap(~ JVM, scale = "free") + 
  ylab("Memory Usage/MG")
```

Если вы knit main.Rmd, вы должны получить .pdf с вашими спецификациями.

Ответ 2

Добавьте cat("\n\n") после каждого графика, чтобы добавить пробел. Это должно помочь сделать работу ## соответствующим подразделением.