2016-09-06 192 views
1

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

在Rmarkdown文件

我有这个输入:

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

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

然后我有一个R脚本调用,做极点变量的一些东西。

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

我怎么能生产出的每一个报告(每单元一个html文件)极< - [1,2,3,4,5 ...]用迭代循环?

感谢

回答

1

你可以用参数化的报表做到这一点:

添加以下的YAML的序言:

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

请参阅http://rmarkdown.rstudio.com/developer_parameterized_reports.html了解更多详情。

0

这是我遍历列表运算值,以及如何产生的每个条目报告。由于我的公司有R和Rmarkdown的旧版本,我无法运行参数化报告。

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

B可用于Report.Rmd脚本使用。