Usted puede usar algo como un bucle for
con un cambio de variable global, que controla qué ciudad desea tejer en el informe; ver el otro post Run Sweave or knitr with objects from existing R session
El código será como (supongamos cities
es un vector de caracteres, y utilizo el paquete knitr
como ejemplo porque se puede especificar el nombre del archivo de la salida):
for (city in cities) {
knit('city_template.Rnw', output = paste('report_', city, '.tex', sep = ''))
}
interior city_template.Rnw
, que tiene un trozo como
<<do-my-job>>=
make_plot(city, ...)
whatever(city, ...)
@
a continuación, obtendrá una serie de archivos tex nombrados por las ciudades, y el resto de su trabajo es compilar a PDF (no es posible para rstudio a compila varios archivos tex, AFAIK, pero es trivial hacerlo en línea de comando o en R con texi2dvi()
).
Hay una cosa que hay que tener cuidado - usted tiene que utilizar una figura prefijo diferente (la opción fig.path
) para cada archivo de salida, de lo contrario diferentes ciudades pueden anular la salida de cada otra figura. En knitr
, esto se puede hacer mediante la siguiente manera:
<<setup, echo=FALSE>>=
opts_chunk$set(fig.path = paste('my-prefix-', city, sep = ''))
@
Creo que esto debe ser seguro para producir muchos informes con un bucle.
Por cierto, ciertamente puede lograr el mismo objetivo con Sweave; quizás sabrá por qué desarrollé knitr
más tarde (esto está fuera de tema, así que no ampliaré aquí).
Esto se puede hacer con una combinación de' brew' y 'sweave'. Eche un vistazo a este ejemplo aquí http://stackoverflow.com/questions/8434371/run-sweave-or-knitr-with-objects-from-existing-r-session/8437769#8437769. Alternativamente, usted puede escribir una función que lea una 'ciudad' y compila documentos en pdf, y recorra las ciudades. – Ramnath
Necesito ampliar esto un poco. ¿Cómo selecciona su .Rnw una ciudad? ¿Qué sistema operativo está utilizando (porque esto puede ser fácilmente con guión en Linux) o puede usar la función Sweave (archivo) en R, pero necesitamos saber cómo hacer que el .Rnw use un conjunto específico de datos. Es posible que necesites usar 'brew' para crear un .Rnw específico a partir de una plantilla. Y luego el siguiente paso es hacer que el PDF -? Sweave sugiere texi2dvi desde el paquete de herramientas ... – Spacedman