R Swave可以自动生成多个PDF吗?

R Swave可以自动生成多个PDF吗?,r,sweave,knitr,R,Sweave,Knitr,我分析了数百个城市的测量数据,需要以Adobe pdf格式为每个城市创建单独的报告 我的过程是这样的: <<setup, echo=FALSE>>= opts_chunk$set(fig.path = paste('my-prefix-', city, sep = '')) @ 首先RStudio准备要显示的数据,保存在X.Rda中。 在X.Rnw RStudio中,我读取X.Rda,选择一个城市,并生成表格和绘图。 在RStudio中,我按Compile PDF并生成

我分析了数百个城市的测量数据,需要以Adobe pdf格式为每个城市创建单独的报告

我的过程是这样的:

<<setup, echo=FALSE>>=
opts_chunk$set(fig.path = paste('my-prefix-', city, sep = ''))
@
首先RStudio准备要显示的数据,保存在X.Rda中。 在X.Rnw RStudio中,我读取X.Rda,选择一个城市,并生成表格和绘图。 在RStudio中,我按Compile PDF并生成city report X.PDF。 我进入步骤2,选择另一个城市,依此类推。 这是非常乏味的,对于每个城市的for循环来说都是完美的,但是如何才能做到呢

谢谢你的r-贡献者


/Chris

您可以使用类似于for循环的东西,并更改全局变量,从而控制要编入报告的城市;看到另一个帖子了吗

代码类似于假设cities是一个字符向量,我使用包作为示例,因为您可以指定输出的文件名:

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, ...)
@
我相信这应该是安全的,以产生一个循环的许多报告

顺便说一句,你当然可以实现与Swave相同的目标;也许你们会知道我后来开发knitr的原因,这是一个离题的话题,所以我不在此详述

在R环境中这样做。 将特定城市的所有输出放入列表中 用块编写RnW,只调用输出 将R图像保存在与Swave报告相同的文件夹中,并将wd设置在此文件夹中 swaveyourfile.RnW,输出=yourcity.tex 使用texi2dvi从R编译tex文件
如果您有许多城市,您应该将其放入函数中。

这可以通过brew和Swave的组合来完成。看看这个例子。或者,您可以编写一个函数来读取城市并将文档编译为pdf,然后在城市之间循环。需要对此进行一些扩展。您的.Rnw如何选择城市?您正在使用什么操作系统,因为它可以在Linux中轻松编写脚本?或者您可以在R中使用swavefile函数,但我们需要知道如何使.Rnw使用特定的数据集。可能需要使用“brew”从模板生成特定的.Rnw。然后下一步是从工具包中制作PDF-?Swave建议的texi2dvi。。。