Si può usare qualcosa di simile a un ciclo for
con un cambio variabile globale, che controlla in quale città si desidera tessere nella relazione; vedere l'altro post Run Sweave or knitr with objects from existing R session
Il codice sarà come (supponiamo cities
è un vettore di carattere, e io uso il pacchetto knitr
come esempio perché è possibile specificare il nome del file di output):
for (city in cities) {
knit('city_template.Rnw', output = paste('report_', city, '.tex', sep = ''))
}
Dentro city_template.Rnw
, si dispone di un pezzo come
<<do-my-job>>=
make_plot(city, ...)
whatever(city, ...)
@
Poi si aprirà una serie di file tex nominati dalle città, e il resto del tuo lavoro è quello di compilarli in PDF (non è possibile per RStudio a compila più file tex, AFAIK, ma è banale farlo in riga di comando o in R con texi2dvi()
).
C'è una cosa che devi fare attenzione: devi usare un prefisso di figura diverso (l'opzione fig.path
) per ogni file di output, altrimenti le città diverse possono sovrascrivere l'un l'altro l'output delle figure. In knitr
, questo può essere fatto da questo modo:
<<setup, echo=FALSE>>=
opts_chunk$set(fig.path = paste('my-prefix-', city, sep = ''))
@
credo che questo dovrebbe essere sicuro per la produzione di molti rapporti con un ciclo.
BTW, puoi certamente raggiungere lo stesso obiettivo con Sweave; forse saprai perché ho sviluppato knitr
in seguito (questo è fuori tema, quindi non mi espanderò qui).
Questo può essere fatto con una combinazione di' brew' e 'sweave'. Dai un'occhiata a questo esempio qui http://stackoverflow.com/questions/8434371/run-sweave-or-knitr-with-objects-from-existing-r-session/8437769#8437769. puoi scrivere una funzione che legge un 'city' e compila doc in pdf e scorrere le città – Ramnath
Hai bisogno di espanderlo un po 'Come fa il tuo .Rnw selezionare una città? Quale sistema operativo stai usando (perché questo può essere facilmente script in Linux)? Oppure puoi usare la funzione Sweave (file) in R, ma dobbiamo sapere come rendere il .Rnw utilizzare un insieme specifico di dati. Potrebbe essere necessario utilizzare "brew" per creare uno specifico .Rnw da un modello. E poi il passo successivo è rendere il PDF -? Sweave suggerisce texi2dvi dal pacchetto di strumenti ... – Spacedman