usar tutorial studio presentaciones informes con r sweave knitr

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í:

  1. Primero RStudio para preparar los datos a mostrar, guardados en X.Rda.
  2. En X.Rnw (RStudio) leí X.Rda, selecciono una ciudad y produzco las tablas y las parcelas.
  3. En RStudio presiono "Compilar PDF" y se produce el informe de la ciudad X.pdf.
  4. 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.