【问题标题】:how do you create a subsection in R markdown你如何在 R markdown 中创建一个小节
【发布时间】:2017-06-08 11:52:14
【问题描述】:

我正在尝试创建如下所示的 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

但其他部分并未创建为小节。知道我在这里做错了什么吗?

【问题讨论】:

  • 这很奇怪。如果您删除这些图,这 3 个部分将按预期工作,只要您在其中添加一些内容,这些部分就会停止工作。

标签: r markdown knitr


【解决方案1】:

在每个绘图后添加cat("\n\n") 以增加空间。这应该有助于使 ## 正确分隔小节。

【讨论】:

  • 好的,图表显示了,但它们一个接一个地显示。我希望它们在部分中显示。例如,在标题 JVM Cpu 标题之后,应该有 jvm cpu 图表,在 JVM Heap Usage 标题之后,JVM Heap 使用图表等。有什么想法吗?
  • 您会发布修改后的代码吗?当我使用 iris 数据对我自己的三个图表进行测试时(您没有提供可重现的示例),我可以毫无问题地为每个小节获取一个图表。
  • "图表显示,但它们一个接一个地显示。"这可能是由于乳胶渲染浮动图形,尝试减小图形大小并在每个绘图后放置 \pagebreak 以查看是否有帮助。
  • 对我来说,所有数字都出现在相应的部分。如果您真的想强制使用浮点数填充这些部分,您可以在每个部分之后包含 \clearpage 命令,这将强制乳胶将数字放入这些部分。
  • @LloydChristmas,比如我有这段代码m
【解决方案2】:

如果你把问题分开,那就更容易了。我创建了一些虚假数据。

您可以在其中运行 for 循环的 main.Rmd,例如:


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")
```

如果您是 knitmain.Rmd,您应该得到一个带有您的规格的 .pdf

【讨论】:

  • 如何执行 knit .Rmd 文件以从命令行生成 .pdf 文件?
猜你喜欢
  • 1970-01-01
  • 2020-10-05
  • 1970-01-01
  • 1970-01-01
  • 2018-03-05
  • 1970-01-01
  • 2021-12-19
  • 2011-04-05
  • 1970-01-01
相关资源
最近更新 更多