您可以使用像一個for
循環使用全局變量變化,要織成的報告,其中城市控制;看到其他交Run Sweave or knitr with objects from existing R session
的代碼會像(假設cities
是一個字符向量,我使用knitr
包作爲一個例子,因爲你可以指定輸出的文件名):
for (city in cities) {
knit('city_template.Rnw', output = paste('report_', city, '.tex', sep = ''))
}
內部city_template.Rnw
,你有一個像
<<do-my-job>>=
make_plot(city, ...)
whatever(city, ...)
@
一大塊。然後你會得到的一系列城市命名的TEX文件,你的任務的其餘部分將它們編譯成PDF(不可能RStudio到編譯多個tex文件,AFAIK,但在命令行或R中使用texi2dvi()
)很簡單。
有一件事你需要小心 - 你必須爲每個輸出文件使用不同的數字前綴(選項fig.path
),否則不同的城市可以覆蓋彼此的數字輸出。在knitr
,這可以通過這樣做:
<<setup, echo=FALSE>>=
opts_chunk$set(fig.path = paste('my-prefix-', city, sep = ''))
@
我相信這應該是安全生產與循環很多報道。
順便說一句,你當然可以用Sweave實現同樣的目標;也許你會知道爲什麼我後來開發knitr
(這是題外話,所以我不會在這裏展開)。
這可以用brew`的'組合來實現和`sweave`。看看這個例子在這裏http://stackoverflow.com/questions/8434371/run-sweave-or-knitr-with-objects-from-existing-r-session/8437769#8437769。或者,你可以編寫一個讀取「城市」並將doc編譯爲pdf的函數,並通過城市循環。 – Ramnath 2011-12-15 12:38:39