2013-03-08 21 views
10

Sono abbastanza nuovo a knitr, ma ho scritto uno script che genera un rapporto per una contea. Una delle prime righe nel primo frammento di codice è display_county <- "King" e interroga un database per fare ogni sorta di cose belle su King County. Ora voglio creare rapporti per ogni contea nel mio stato. L'unica riga nello script che deve essere modificata è la definizione di display_county.Generazione di rapporti knitr

So che i pacchetti brew sono configurati per cose come questa, e so che c'è sovrapposizione tra brew e knitr, ma non so cosa dovrei usare.

This answer using Brew and Sweave funzionerebbe con piccole modifiche, ma esiste un buon modo per evitare knitrbrew?

+0

C'è qualche motivo non è possibile creare un vettore delle contee e poi iterare su di esso? –

+0

@BryanHanson Niente affatto, ed è proprio quello che ho fatto usando 'brew' come nella risposta collegata di Ramnath. Ma * sembra * come qualcosa che dovrei essere in grado di fare solo in 'knitr'. – Gregor

+0

Lo hai provato in 'knitr'? Se funziona in 'R' tramite interattivo o script, non vedo perché non puoi farlo anche con' knitr'. Non ho mai usato 'brew', ma ho usato' knitr' e 'sweave' estensivamente, e penso che dovrebbe essere possibile. –

risposta

5

Se ho capito bene, userete lo stesso file Rnw per ogni contea, quindi solo la variabile display_county sarà diversa per ogni contea. Vorrei prima effettuare la chiamata al database per ottenere tutti i nomi delle contee e memorizzarle in un vettore (diciamo ... myCounties). Dopo di che, i report possono essere generati con uno script che contiene il seguente:

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

per gestire gli errori in modo più efficace, si può anche avvolgere la chiamata knit2pdf su una dichiarazione TryCatch:

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

'c' è un nome piuttosto terribile per l'indice di un ciclo poiché è anche una funzione piuttosto importante in R. Si potrebbe prendere in considerazione la ridenominazione dell'indice. – Dason

+0

Vero ... verrà modificato. – JAponte