我有一个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文件)?
由于
答案 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
脚本使用。