使用 r 中的循环创建包含文本字符串和图表的简单报告
Create a simple report with text strings and plots using loop in r
我正在尝试找到一种方法来循环遍历数据框的行以生成报告(最好是 PDF 格式),其中包括一段长度或更长的字符串、图表和每天的数据值那一年。我以前在一个循环中导出了只是图的 PDF,但我找不到包含任何相当长的文本的解决方案。
假设我有一个这样的数据框:
Date <- c("01/01/2014", "01/02/2014", "01/03/2014")
TextString <- c("imagine this is a paragraph or longer 1", "imagine this is a paragraph or longer 2", "imagine this is a paragraph or longer 3")
TableData1 <- c(10000, 9000, 8000)
TableData2 <- c(6, 5, 4)
PlotData3 <- c(22, 11, 21)
PlotData4 <- c(6, 7, 8)
PlotData5 <- c(21, 17, 14)
Report <- data.frame(Date, TextString, TableData1, TableData2, PlotData3, PlotData4, PlotData5)
而且我希望报告的 PDF 结构如下所示:
01/01/2014
imagine this is a paragraph or longer 1
"TableData1:" 10000
"TableData2:" 6
*plot* pie(c(Report$PlotData3[1], Report$PlotData4[1], Report$PlotData5[1]))
01/02/2014
imagine this is a paragraph or longer 2
"TableData1:" 9000
"TableData2:" 5
*plot* pie(c(Report$PlotData3[2], Report$PlotData4[2], Report$PlotData5[2]))
01/03/2014
imagine this is a paragraph or longer 3
"TableData1:" 8000
"TableData2:" 4
*plot* pie(c(Report$PlotData3[3], Report$PlotData4[3], Report$PlotData5[3]))
谁能指出我正确的方向?我查看了 knitr 的一些教程,因为它似乎适用,但我不确定它是否会以这种方式循环遍历数据。
这可以使用 R Markdown 轻松完成。如果您使用的是 RStudio,这将变得非常简单。请按照以下步骤操作:
- 打开一个新的 R Markdown 文件。 (文件 -> 新建文件 -> R Markdown...
- 选择标题和输出格式。 (这些也可以在结果中修改header)
- 将以下内容粘贴到 R Markdown 文件中。
- 点击编织按钮。
- RStudio 自动将 R Markdown 处理成所需的格式。
下面的 .Rmd (R Markdown) 文件将在 HTML 中生成您想要的内容。如果您的计算机上安装了 LaTeX,将 header 中的输出行更改为 pdf_document 应该会生成 PDF 文件。
---
title: "Test PDF"
author: "Daddy The Runner"
date: "Monday, January 05, 2015"
output: html_document
---
```{r echo=FALSE, comment=NA}
Date <- c("01/01/2014", "01/02/2014", "01/03/2014")
TextString <- c("imagine this is a paragraph or longer 1", "imagine this is a paragraph or longer 2", "imagine this is a paragraph or longer 3")
TableData1 <- c(10000, 9000, 8000)
TableData2 <- c(6, 5, 4)
PlotData3 <- c(22, 11, 21)
PlotData4 <- c(6, 7, 8)
PlotData5 <- c(21, 17, 14)
Report <- data.frame(Date, TextString, TableData1, TableData2, PlotData3, PlotData4, PlotData5, stringsAsFactors = FALSE)
for (i in 1:nrow(Report)) {
cat(Report$Date[i], "\n")
cat(Report$TextString[i], "\n")
cat("TableData1: ", Report$TableData1[i], "\n")
cat("TableData2: ", Report$TableData2[i], "\n")
pie(c(Report$PlotData3[i], Report$PlotData4[i], Report$PlotData5[i]))
cat("\n")
}
```
我正在尝试找到一种方法来循环遍历数据框的行以生成报告(最好是 PDF 格式),其中包括一段长度或更长的字符串、图表和每天的数据值那一年。我以前在一个循环中导出了只是图的 PDF,但我找不到包含任何相当长的文本的解决方案。
假设我有一个这样的数据框:
Date <- c("01/01/2014", "01/02/2014", "01/03/2014")
TextString <- c("imagine this is a paragraph or longer 1", "imagine this is a paragraph or longer 2", "imagine this is a paragraph or longer 3")
TableData1 <- c(10000, 9000, 8000)
TableData2 <- c(6, 5, 4)
PlotData3 <- c(22, 11, 21)
PlotData4 <- c(6, 7, 8)
PlotData5 <- c(21, 17, 14)
Report <- data.frame(Date, TextString, TableData1, TableData2, PlotData3, PlotData4, PlotData5)
而且我希望报告的 PDF 结构如下所示:
01/01/2014
imagine this is a paragraph or longer 1
"TableData1:" 10000
"TableData2:" 6
*plot* pie(c(Report$PlotData3[1], Report$PlotData4[1], Report$PlotData5[1]))
01/02/2014
imagine this is a paragraph or longer 2
"TableData1:" 9000
"TableData2:" 5
*plot* pie(c(Report$PlotData3[2], Report$PlotData4[2], Report$PlotData5[2]))
01/03/2014
imagine this is a paragraph or longer 3
"TableData1:" 8000
"TableData2:" 4
*plot* pie(c(Report$PlotData3[3], Report$PlotData4[3], Report$PlotData5[3]))
谁能指出我正确的方向?我查看了 knitr 的一些教程,因为它似乎适用,但我不确定它是否会以这种方式循环遍历数据。
这可以使用 R Markdown 轻松完成。如果您使用的是 RStudio,这将变得非常简单。请按照以下步骤操作:
- 打开一个新的 R Markdown 文件。 (文件 -> 新建文件 -> R Markdown...
- 选择标题和输出格式。 (这些也可以在结果中修改header)
- 将以下内容粘贴到 R Markdown 文件中。
- 点击编织按钮。
- RStudio 自动将 R Markdown 处理成所需的格式。
下面的 .Rmd (R Markdown) 文件将在 HTML 中生成您想要的内容。如果您的计算机上安装了 LaTeX,将 header 中的输出行更改为 pdf_document 应该会生成 PDF 文件。
---
title: "Test PDF"
author: "Daddy The Runner"
date: "Monday, January 05, 2015"
output: html_document
---
```{r echo=FALSE, comment=NA}
Date <- c("01/01/2014", "01/02/2014", "01/03/2014")
TextString <- c("imagine this is a paragraph or longer 1", "imagine this is a paragraph or longer 2", "imagine this is a paragraph or longer 3")
TableData1 <- c(10000, 9000, 8000)
TableData2 <- c(6, 5, 4)
PlotData3 <- c(22, 11, 21)
PlotData4 <- c(6, 7, 8)
PlotData5 <- c(21, 17, 14)
Report <- data.frame(Date, TextString, TableData1, TableData2, PlotData3, PlotData4, PlotData5, stringsAsFactors = FALSE)
for (i in 1:nrow(Report)) {
cat(Report$Date[i], "\n")
cat(Report$TextString[i], "\n")
cat("TableData1: ", Report$TableData1[i], "\n")
cat("TableData2: ", Report$TableData2[i], "\n")
pie(c(Report$PlotData3[i], Report$PlotData4[i], Report$PlotData5[i]))
cat("\n")
}
```