2016-07-13 70 views
-1

我正在使用R studio版本0.99.485。我必須根據一個輸入矢量做許多報告,所以我決定在R Markdown(R studio)中編寫循環。我只給出部分代碼:創建許多文檔

```{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') 
} 
``` 

因此,對於某些向量中的每一個我,我都會寫相同結構的報告。

如果我像這樣執行代碼,它將返回一個文檔中的所有報告,但我希望擁有與報告一樣多的html文檔。

在循環結束時,我需要在for循環結束時添加什麼內容才能在每次循環結束時將報告保存爲文檔?

+0

R會創建一個'pdf/html,jpeg文件',並開始放置所有的東西,除非它被修復或被告知要做一個新的東西。與數字一樣,您可以執行dev.off()或dev.next()。 所以我會懷疑有類似的Markdown,或者只是在創建HTML文件 –

+0

@Jan Sila據我瞭解,你不可能從rmarkdown r chunk做多個html文檔。我不知道如何將dev.off()或dev.next()嵌入到代碼中。 – Mislav

+0

我不是那個意思,但類似的東西?當我登錄電腦時,我也會嘗試Google –

回答

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腳本的目錄中的文件。