您可以使用像一个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