2013-03-08 20 views
10

私はかなり新しいknitrですが、郡のレポートを生成するスクリプトを作成しました。最初のコードチャンクの最初の行の1つはdisplay_county <- "King"で、データベースに照会してキング郡についてあらゆる種類の素敵なものを作成します。今私は自分の州のすべての郡のレポートを作成したいと思っています。変更が必要なスクリプト内の唯一の行は、display_countyの定義です。 knitrレポートの生成

は、私はこのようなもののために設定されて brewパッケージを知っている、と私は brewknitrとの間の重複がありますけど、私は私が使用してしなければならないのか分かりません。

This answer using Brew and Sweave小さな変更を加えても問題ありませんが、brewをバイパスするには、knitrの方法がありますか?

+0

をいくつかの理由がありますあなたは郡のベクトルを作ってそれを反復することはできませんか? –

+0

@BryanHansonまったくそうではありません。それはRamnathのリンクされた答えのように 'brew'を使って行ったことです。しかし、私はちょうど「ニット」でできるはずのもののように感じます。 – Gregor

+0

あなたは 'knitr'で試しましたか?インタラクティブやスクリプトを使って 'R'で動作するのであれば、' knitr'でもできない理由は分かりません。私は一度も「醸造」をしたことはありませんが、「ニット」と「甘み」を広範囲に使っています。 –

答えて

5

私が正しく理解している場合は、各郡ごとに同じRnwファイルを使用するため、変数display_countyだけが各郡ごとに異なります。私は最初にデータベースへの呼び出しを行い、郡の名前をすべて取得し、ベクターに格納します(たとえば、myCounties)。その後、レポートは以下を含むスクリプトを生成することができます。

for(dc in myCounties) { 
    knit2pdf(input='county_report.Rnw', output=paste0(dc, '_county_report.pdf')) 
} 

より効果的にエラーを処理するために、あなたはまた、tryCatchステートメントのknit2pdfコールラップすることができます:

for(dc in myCounties) { 
    tryCatch(knit2pdf(input='county_report.Rnw', output=paste0(dc, '_county_report.pdf'))) 
} 
+1

'c'はRのかなり重要な関数であるため、ループのインデックスのかなり恐ろしい名前です。インデックスの名前を変更することを検討するかもしれません。 – Dason

+0

True ...編集します。 – JAponte

関連する問題