RmarkDown迭代循环

时间:2016-09-06 09:15:51

标签: r loops knitr r-markdown

我有一个RMarkdown文件,可以为业务单位“Ux”生成报告。我想做一个迭代循环来为业务的所有业务单元“U1,U2,U3,......”生成一个特定的报告。

在Rmarkdown文件中我有这个输入:

```{r , warning=FALSE, echo=FALSE, message=FALSE, autodep=TRUE,cache.vars='pole' } 
pole <- "21" 
``` 

其中pole是业务单位标识变量。

然后我有一个R脚本调用,用极变量做一些事情。

```{r LOAD, warning=FALSE, echo=FALSE, message=FALSE, autodep=TRUE, cache=FALSE }
require(knitr)
source('POLE2.r', local=environment())
```

如何通过迭代循环为极点&lt; - [1,2,3,4,5 ...]生成每个单独的报告(每个单元的html文件)?

由于

2 个答案:

答案 0 :(得分:2)

您可以使用参数化报告执行此操作:

将以下内容添加到YAML-preamble:

---
params:
  pole: 21 # default value
---

在您的代码中将pole <- "21"更改为pole <- params$pole

然后运行一个循环:

poles <- 1:5 # define your set
for (pole in poles)
  rmarkdown::render(input = "yourFile.Rmd", 
      output_file = paste0("yourOutput_", pole, ".html"),
      params = list(pole = pole)
  )

有关详细信息,请参阅Source

答案 1 :(得分:0)

这是我遍历列表操作值并为每个条目生成报告的方法。由于我的公司有旧版R和Rmarkdown,我无法运行参数化报告。

for(i in seq_along(business))
{
  B <- business[i]
  knit2html("Report.Rmd"
            ,paste0(filepath,"/business ",B ,".html")
  )
}

B可供Report.Rmd脚本使用。