2013-03-08 37 views
10

knitr için oldukça yeniyim ama bir ilçe için rapor oluşturan bir komut dosyası yazdım. İlk kod yığınındaki ilk satırlardan biri display_county <- "King", ve King County hakkında her türlü güzel şeyi yapmak için bir veritabanı sorgular. Şimdi eyaletimdeki her ilçe için raporlar oluşturmak istiyorum. Komut dosyasında değiştirilmesi gereken tek satır, display_county'un tanımıdır.Knitr raporları oluşturuluyor

brew paketinin böyle şeyler için kurulmuş olduğunu biliyorum ve brew ile knitr arasında çakışma olduğunu biliyorum, ancak ne kullanmalıyım bilmiyorum.

This answer using Brew and Sweave küçük değişiklikler ile çalışır, ancak brew baypas için güzel bir knitr yol var mı?

+0

bir sebep mi var ilçelerin bir vektörünü yapamaz ve sonra tekrar üzerinde duramazsın? –

+0

@BryanHanson Hiç de değil, Ramnath'ın bağlantılı cevabındaki gibi "demlemek" kelimesini kullandım. Ama * sadece 'knitr' yapmam gereken bir şey gibi * hissediyor. – Gregor

+0

Bunu 'knitr'de denediniz mi? Eğer interaktif veya betik yoluyla "R" içinde çalışıyorsa, bunu neden 'knitr' ile yapamayacağınızı anlamıyorum. Ben hiç demlemek demedim ama 'knitr' ve 'sweave' yaygın olarak kullandım ve mümkün olabileceğini düşünüyorum. –

cevap

5

Doğru anlıyorsam, her ülke için aynı Rnw dosyasını kullanacaksınız, bu nedenle her ilçe için yalnızca display_county değişkeni farklı olacaktır. İlk önce tüm ilçelerin isimlerini almak ve onları bir vektörde saklamak için veritabanına çağrı yapardım (… myCounties). Bundan sonra, raporlar bir komut dosyası aşağıdaki içeren oluşturulabilir:

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

daha etkin hataları işlemek için ayrıca bir tryCatch ekstresinde knit2pdf çağrıyı sarabilirsiniz:

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

'c', bir döngü endeksi için oldukça korkunç bir isimdir, çünkü R'de de oldukça önemli bir işlevdir. Dizini yeniden adlandırmayı düşünebilirsiniz. – Dason

+0

Doğru ... Düzenlenecek. – JAponte