创建许多文档

时间:2016-07-13 08:01:27

标签: r for-loop report r-markdown

我正在使用R studio Version 0.99.485。我必须根据一个输入向量做很多报告,所以我决定在R Markdown(R studio)中编写for循环。我只提供部分代码:

```{r forensis, results='asis', echo=FALSE}
load(file = "E:/data/R/Forensic_reports/fdata.RData")
for (i in 1:length(osobni_podaci$Oib)) {
  cat("  \n### UPIT ZA OIB: ", oibreq[i], '  \n')
  cat('  \n### STATUS OIB-A  \n')
  cat('Status: ',ifelse(oib_status$X_status[i] == 1, 'Aktivan', 'Neaktivan'), '  \n')
  cat('  \n### OSNOVNI PODACI  \n')
  cat("Ime: ", osobni_podaci$Ime[i], '  \n')
}
```

因此,对于某些向量中的每个i,我都在编写具有相同结构的报告。

如果我执行这样的代码,它将在一个文档中返回所有报告,但我想拥有与报告一样多的html文档。

我需要在r chunk内部的for循环结束时添加什么,以便在每次循环结束时将报告保存为文档?

1 个答案:

答案 0 :(得分:0)

我在这里找到了答案:https://github.com/petrelharp/r-markdown-tutorial

使用像这样的.rmd:

---
title: "Visualization for `r input.file`"
date: "`r date()`"
---

```{r setup, echo=FALSE}
if (!file.exists(input.file)) { stop("Can't find file.") }
xy <- read.table(input.file)
```

The file `r input.file` 
has `r nrow(xy)` observations:

```{r plotit}
plot( height ~ age, col=type, data=xy )
legend( "topleft", pch=1, legend=levels(xy$type), col=1:nlevels(xy$type) )
```

像这样的R脚本:

library(knitr)
owd <- setwd("examples/thedata")  # determines where output will go
opts_knit$set(root.dir=".")  # determines where code is evaluated
file.names <- list.files(".",".*tsv")
for (input.file in file.names) {
    output.file <- gsub(".tsv$",".viz.html",input.file)
    knit2html("../simple-template.Rmd", output=output.file, quiet=TRUE)
}

和一堆.tsv输入文件存储在评估R脚本的目录中。