for
レポートに織り込む都市を制御するグローバル変数を変更するループのようなものを使用できます。他の投稿を参照してください既存のRセッションからのオブジェクトでSweaveまたはknitrを実行します
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()
)。
注意が必要なことが1つありますfig.path
。出力ファイルごとに異なるFigureプレフィックス(オプション)を使用する必要があります。そうしないと、異なる都市が互いのFigure出力を上書きする可能性があります。ではknitr
、これは次のように実行できます。
<<setup, echo=FALSE>>=
opts_chunk$set(fig.path = paste('my-prefix-', city, sep = ''))
@
ループのある多くのレポートを作成するには、これで安全だと思います。
ところで、Sweaveでも同じ目標を確実に達成できます。おそらくあなたは私がknitr
後で開発した理由を知っているでしょう(これはトピックから外れているので、ここでは拡張しません)。