我分析来自许多城市的测量数据(数百个),并且需要为每个城市创建单独的报告(采用Adobe pdf格式)。
我的流程是这样的:
这非常繁琐,看起来非常适合每个城市的循环,但它怎么能完成?
谢谢r-contributors!
/克里斯
答案 0 :(得分:27)
您可以使用类似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,但是它很简单。命令行或在带有texi2dvi()
)的R中。
您需要注意一件事 - 您必须为每个输出文件使用不同的数字前缀(选项fig.path
),否则不同的城市可以覆盖彼此的数字输出。在knitr
中,可以通过以下方式完成:
<<setup, echo=FALSE>>=
opts_chunk$set(fig.path = paste('my-prefix-', city, sep = ''))
@
我认为通过循环生成许多报告应该是安全的。
顺便说一句,你可以用Sweave达到同样的目标;也许你会知道为什么我后来开发knitr
(这是偏离主题的,所以我不会在这里扩展)。
答案 1 :(得分:0)
如果你有很多城市,你应该把它放到一个功能中。