tutorial - sweave r studio install
¿Sweave puede producir muchos pdfs automáticamente? (2)
Analizo las mediciones de muchas ciudades (cientos) y necesito crear informes separados por ciudad (en formato pdf de Adobe).
Mi proceso es así:
- Primero RStudio para preparar los datos a mostrar, guardados en X.Rda.
- En X.Rnw (RStudio) leí X.Rda, selecciono una ciudad y produzco las tablas y las parcelas.
- En RStudio presiono "Compilar PDF" y se produce el informe de la ciudad X.pdf.
- Voy al paso 2, elijo otra ciudad, y así sucesivamente.
Esto es muy tedioso y se ve perfecto para un bucle for por ciudad, pero ¿cómo se puede hacer?
Gracias r-contribuidores!
/ Chris
Puede usar algo como un bucle for
con un cambio de variable global, que controla qué ciudad desea incluir en el informe; vea la otra publicación Ejecute Sweave o knitr con objetos de la sesión R existente
El código será similar (suponga que las cities
son un vector de caracteres, y yo uso el paquete knitr
como ejemplo porque puede especificar el nombre de archivo de la salida):
for (city in cities) {
knit(''city_template.Rnw'', output = paste(''report_'', city, ''.tex'', sep = ''''))
}
Dentro de city_template.Rnw
, tienes una parte como
<<do-my-job>>=
make_plot(city, ...)
whatever(city, ...)
@
Luego obtendrás una serie de archivos tex nombrados por las ciudades, y el resto de tu trabajo es compilarlos en PDF (no es posible que RStudio compile varios archivos tex, AFAIK, pero es trivial hacerlo en la línea de comandos o en R con texi2dvi()
).
Hay una cosa que debes tener cuidado: tienes que usar un prefijo de figura diferente (la opción fig.path
) para cada archivo de salida, de lo contrario, diferentes ciudades pueden anular la salida de cada figura. En knitr
, esto se puede hacer de la siguiente manera:
<<setup, echo=FALSE>>=
opts_chunk$set(fig.path = paste(''my-prefix-'', city, sep = ''''))
@
Creo que esto debería ser seguro para producir muchos informes con un bucle.
Por cierto, puedes lograr el mismo objetivo con Sweave; quizás sabrá por qué desarrollé knitr
más tarde (esto no es un tema, por lo que no me expandiré aquí).
- Hacer eso en medio ambiente.
- Ponga todos los resultados de la ciudad específica en una lista
- Escribe tu RnW con trozos solo llamando las salidas
- Guarde su imagen R en la misma carpeta que su informe de Sweave y configure wd en esta misma carpeta
- Sweave ("yourfile.RnW", output = "yourcity.tex")
- Usa texi2dvi para compilar tu archivo tex desde R
Si tienes muchas ciudades, deberías poner eso en una función.