2013-03-08 254 views
10

我很新knitr,但我編寫了一個腳本,爲縣生成報告。第一個代碼塊中的第一行是display_county <- "King",並且它查詢數據庫以製作關於King County的各種不錯的東西。現在我想爲我州的每個縣製作報告。腳本中唯一需要更改的行是display_county的定義。生成knitr報告

我知道brew包被設置爲這樣的東西,我知道有brewknitr之間的重疊,但我不知道我應該使用什麼。

This answer using Brew and Sweave會稍作修改,但有沒有不錯的knitr方式繞過brew

+0

是有一些原因你不能製作縣的矢量然後迭代它? – 2013-03-08 23:28:43

+0

@BryanHanson完全沒有,這正是我在Ramnath的相關答案中使用'brew'所做的。但它*感覺*就像我應該能夠在'knitr'中做的事情一樣。 – Gregor 2013-03-09 00:27:58

+0

你在'knitr'中試過了嗎?如果它通過交互式或腳本在'R'中工作,我不明白爲什麼你不能用'knitr'來完成。我從來沒有使用過「釀造」,但廣泛使用了「knitr」和「sweave」,我認爲這應該是可能的。 – 2013-03-09 00:45:59

回答

5

如果我理解正確,您將爲每個縣使用相同的Rnw文件,因此每個縣只有變量display_county會有所不同。我會先打電話到數據庫,以獲得縣的所有名稱,並將它們存儲在一個向量中(例如... myCounties)。在此之後,可以用含有以下內容的腳本生成的報表:

for(dc in myCounties) { 
    knit2pdf(input='county_report.Rnw', output=paste0(dc, '_county_report.pdf')) 
} 

爲了更有效地處理錯誤,你也可以包裝knit2pdf上的呼叫tryCatch聲明:

for(dc in myCounties) { 
    tryCatch(knit2pdf(input='county_report.Rnw', output=paste0(dc, '_county_report.pdf'))) 
} 
+1

'c'是循環索引的一個非常可怕的名字,因爲它在R中也是一個非常重要的函數。您可能會考慮重命名索引。 – Dason 2013-03-21 22:02:13

+0

True ...將編輯。 – JAponte 2013-03-22 16:08:52