使用 knitr 在 R 中重现 ad-hoc 报告
Reproducible ad-hoc report in R with knitr
首先我是 R 编程新手。我还发现了一些非常接近我无法解决但最终没有真正帮助我的话题。
我继承了一份报告,该报告将一些图表以.png 图像的形式粘贴到文件夹中,然后将其编织成一份word 报告。
我已经设法使 someScriptIn.R 部分自动化,它能够分析 .csv 文件以找出它必须分析多少数据集并正确设置标题、日期等。它可以很好地生成图像。
你要知道我想做的是在数据集的数量、标题等方面有一个动态变化的报告。所以它不会让我们说每次都有 3 组图像。它可能是 1 也可能是 10。这将取决于用户。 Series.title 也是在 someScriptIn.R 和 Series.quarter.
中创建的变量
当我尝试将 knitr 与类似于以下代码的 .rmd 文件一起使用时,问题就出现了。
代码:
---
output: word_document
---
```{r, echo=FALSE, results='hide'}
# source(".../someScriptIn.R") # this will produce the graphs
```
`r Series.title[1]` `r Series.quarter` Quarters Forecast # here Series.title[1] is Group 1



`r Series.title[1]` `r Series.quarter` Quarters Forecast # here Series.title[2] is Group 2



`r Series.title[1]` `r Series.quarter` Quarters Forecast # here Series.title[3] is Group 3



问题是如何使用 for 循环完成这个过程,同时要记住图形是已经在文件夹中创建的图像? this 解决方案是否能够解决我的问题?实施方式是什么?
使用一个"asis"块:
---
output:
word_document
---
```{r, results="asis", echo=FALSE}
cat("First part of report\n\n")
cat(paste0("", sep="", collapse="\n\n"))
```
文件为 a1.png, a2.png, a3.png
.
的简化假设
您可以使用 2 个 for 循环和 sprintf 函数来完成:
```{r, results='asis', echo=FALSE}
Series.title <- c("Group 1", "Group 2", "Group 3")
Series.quarter <- "SQ?"
for (i in 1:3) {
cat(sprintf("%s %s Quarters Forecast \n\n", Series.title[i], Series.quarter))
for (j in 1:3) {
cat(sprintf(" \n", j, i))
}
}
```
for 循环的输出:
Group 1 SQ? Quarters Forecast



Group 2 SQ? Quarters Forecast



Group 3 SQ? Quarters Forecast



首先我是 R 编程新手。我还发现了一些非常接近我无法解决但最终没有真正帮助我的话题。
我继承了一份报告,该报告将一些图表以.png 图像的形式粘贴到文件夹中,然后将其编织成一份word 报告。
我已经设法使 someScriptIn.R 部分自动化,它能够分析 .csv 文件以找出它必须分析多少数据集并正确设置标题、日期等。它可以很好地生成图像。
你要知道我想做的是在数据集的数量、标题等方面有一个动态变化的报告。所以它不会让我们说每次都有 3 组图像。它可能是 1 也可能是 10。这将取决于用户。 Series.title 也是在 someScriptIn.R 和 Series.quarter.
中创建的变量当我尝试将 knitr 与类似于以下代码的 .rmd 文件一起使用时,问题就出现了。
代码:
---
output: word_document
---
```{r, echo=FALSE, results='hide'}
# source(".../someScriptIn.R") # this will produce the graphs
```
`r Series.title[1]` `r Series.quarter` Quarters Forecast # here Series.title[1] is Group 1



`r Series.title[1]` `r Series.quarter` Quarters Forecast # here Series.title[2] is Group 2



`r Series.title[1]` `r Series.quarter` Quarters Forecast # here Series.title[3] is Group 3



问题是如何使用 for 循环完成这个过程,同时要记住图形是已经在文件夹中创建的图像? this 解决方案是否能够解决我的问题?实施方式是什么?
使用一个"asis"块:
---
output:
word_document
---
```{r, results="asis", echo=FALSE}
cat("First part of report\n\n")
cat(paste0("", sep="", collapse="\n\n"))
```
文件为 a1.png, a2.png, a3.png
.
您可以使用 2 个 for 循环和 sprintf 函数来完成:
```{r, results='asis', echo=FALSE}
Series.title <- c("Group 1", "Group 2", "Group 3")
Series.quarter <- "SQ?"
for (i in 1:3) {
cat(sprintf("%s %s Quarters Forecast \n\n", Series.title[i], Series.quarter))
for (j in 1:3) {
cat(sprintf(" \n", j, i))
}
}
```
for 循环的输出:
Group 1 SQ? Quarters Forecast



Group 2 SQ? Quarters Forecast



Group 3 SQ? Quarters Forecast


