我分析了许多城市(数百个)的测量结果,并且需要为每个城市创建单独的报告(以Adobe pdf格式)。
我的过程是这样的:
这非常繁琐,并且对于每个城市来说都是很不错的选择,但是如何做到呢?
谢谢R贡献者!
/克里斯
最佳答案
您可以使用带有更改全局变量的for
循环之类的东西来控制要编织到报告中的城市。参见其他文章Run Sweave or knitr with objects from existing R session
代码类似于(假设cities
是字符 vector ,我以 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
的原因(这是题外话,因此在此不再赘述)。
关于r - Sweave可以自动产生许多PDF吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8519128/