2016-09-06 225 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腳本使用。