PDF de programación - Generación automática de informes con Sweave y LATEX

Generación automática de informes con Sweave y LATEXgráfica de visualizaciones

Publicado el 29 de Mayo del 2017
1.021 visualizaciones desde el 29 de Mayo del 2017
534,5 KB
11 paginas
Creado hace 12a (01/03/2012)
Generación automática de informes con Sweave y LATEX

Francesc Carmona

Departamento de Estadística

Universidad de Barcelona

Marzo 2012

1.

Introducción

Como dice el manual oficial: “Sweave proporciona un marco flexible para mezclar texto y código R con
el objetivo de generar documentos de forma automática”. Un único archivo fuente contiene el texto y el
código R y tras el proceso se obtiene un documento final con

el texto con formato

el código R (que también se puede ocultar) y/o

los resultados del código (texto, cálculos, gráficos)

Este proceso permite regenerar un informe cuando los datos cambian o reproducir un análisis con el
mismo archivo con ligeras modificaciones y generar el correspondiente informe. La idea es incluir el có-
digo S para el análisis en un documento LATEX con una sintaxis noweb (Ramsey, 1998). Noweb es una
herramienta de programación literal que permite combinar código fuente de programas y la documen-
tación correspondiente dentro de un mismo archivo. Sweave reemplaza el código con sus resultados, de
forma que el documento final contiene el texto y los resultados del análisis estadístico. Así se combinan
la potencia del LATEX para dar formato a documentos de gran calidad y el análisis de los datos con R.
Muchos de los usuarios de R son también usuarios de LATEX aunque, en caso contrario, Sweave es un
buen argumento para aprender LATEX. Seguramente, los usuarios de LATEX disponen de un editor de texto
como Emacs que tiene un modo ESS noweb ideal para nuestro propósito. En cualquier caso, Sweave es
un sistema independiente y se puede utilizar con cualquier editor de texto, aunque siempre es preferible
uno que nos ayude con LATEX y/o R como WinEdt, Tinn-R,. . . Aunque se pueden crear diferentes drivers
para trasladar los archivos Sweave a diferentes lenguajes (LATEX, HTML,. . . ) con diferentes motores S
(R, S-Plus,. . . ), actualmente únicamente disponemos del driver RWeaveLatex que combina R y LATEX.

Archivos noweb

Un archivo noweb es un archivo de texto simple que consiste en varios segmentos separados de texto y
código de programación. Estos segmentos se llaman trozos (chunks). Los hay de dos tipos:

Trozos de texto que empiezan con el signo @ como primer carácter, seguido por un espacio en blanco
o un carácter de salto de línea. Si se escribe algo después del espacio en blanco, se considera un
comentario y se ignora. Lo normal en estos trozos es introducir texto con instrucciones para darle
formato como en LATEX.

Trozos de código que empiezan con <<name >>= al principio de línea. Aquí también el resto de la línea

puede ser un comentario y es ignorado.

Un archivo fuente para Sweave es un archivo noweb estándar con algún añadido extra para controlar
mejor el resultado final. La extensión habitual para los archivos noweb es .nw y así se puede escribir para
los archivos Sweave. Además, Sweave reconoce las extensiones .rnw, .Rnw, .snw y .Snw. De todas ellas,
nosotros nos inclinamos por .Rnw ya que refleja la relación con R.
En la figura 1 se muestra el procedimiento completo para trabajar con Sweave. Desde la linea de comandos
de R y si tenemos la carpeta de trabajo adecuada, simplemente haremos:

> Sweave("doc.Rnw")

1

Figura 1: Diagrama de archivos para trabajar con Sweave.

y obtenemos el archivo doc.tex para procesar con LATEX o PDFLATEX.
Por otra parte, si hacemos:

> Stangle("doc.Rnw")

el archivo que se obtiene es doc.R que contiene el código R de todo el documento original. Con la opción
split=TRUE activa, los diversos trozos se escriben en archivos separados.

2. Un ejemplo sencillo

A continuación presentamos un ejemplo sencillo de archivo Sweave que contiene dos trozos de código
entre el texto y las instrucciones de formato de un típico archivo LATEX que llamaremos ejemplo.Rnw.
Se trata de escribir el texto como vemos en la figura 2 en un programa como RStudio o cualquier procesador
de archivos LATEX como TEXmaker, WinEdt, Kile, etc.
A continuación se procesa este archivo con extensión .Rnw con Sweave. Suponiendo que tengamos los
programas necesarios bien configurados, este proceso se puede hacer de varias formas.
El procedimiento más sencillo es desde RStudio, ya que obtiene el archivo PDF directamente con la
instrucción compilePdf() o con el botón correspondiente.

> compilePdf("~/R/Sweave/ejemplo.Rnw")

Así se obtiene el archivo ejemplo.pdf que podemos ver en la figura 4.
En realidad el procediemto consiste en dos pasos. El primero para generar el archivo ejemplo.tex
y el siguiente para procesar este archivo con LATEX y obtener el archivo ejemplo.pdf. Los archivos
ejemplo.tex y ejemplo.pdf se dejan en la misma carpeta de trabajo, junto con sus archivos asociados
como ejemplo.log. En la figura 3 podemos ver el archivo ejemplo.tex.
Otro procedimiento, como se ha explicado, consiste en generar el archivo ejemplo.tex desde la consola
de una sesión de R con la instrucción

> Sweave("ejemplo.Rnw")

Writing to file ejemplo.tex
Processing code chunks with options ...

1 : echo keep.source term verbatim
2 : keep.source term verbatim pdf

You can now run (pdf)latex on ‘ejemplo.tex’

2

Figura 2: Archivo ejemplo.Rnw en RStudio.

3

Figura 3: Archivo ejemplo.tex en RStudio.

4

Figura 4: Archivo ejemplo.pdf.

5

Figura 5: Archivo ejemplo.Rnw en Kile.

Para después procesar el archivo ejemplo.tex también en la misma sesión R:

> tools::texi2pdf("ejemplo.tex")

Sin embargo, es posible que sea más productivo escribir el documento ejemplo.Rnw en un editor LATEX,
obtener el documento ejemplo.tex con Sweave y abrir este último con el mismo editor para procesarlo
y obtener el PDF.
Desde una consola del sistema, sin necesidad de abrir una sesión R, y si estamos en la carpeta de trabajo
podemos ejecutar Sweave con la instrucción:

$ R CMD Sweave ejemplo.Rnw

Entonces el archivo ejemplo.tex se abre o se actualiza en el editor LATEXy se procesa con el PDFLATEX.
Podemos ver este procedimiento con el editor Kile en la figura 5.
Además podemos incorporar esta instrucción a las opciones del editor. Por ejemplo, en la configuración
del editor TEXmaker que podemos ver en la figura 6 tenemos dicha instrucción lista para ejecutarse desde
el menú.
Finalmente hay una tercera posibilidad mediante la ejecución en la consola del sistema o la inclusión en
el editor LATEX de un archivo Sweave.sh o Sweave.bat, según el sistema operativo1. Por ejemplo, una
vez obtenido e instalado correctamente el archivo Sweave.sh en un sistema Linux, podemos ejecutar en
la consola la instrucción

$ Sweave -ld ejemplo.Rnw

y obtener directamente el archivo PDF. La ventaja de este script, que se puede obtener del CRAN, son
sus múltiples opciones. Por ejemplo, con la siguiente instrucción

$ Sweave -otld=acrobat ejemplo.Rnw

1Consultar el artículo sobre la instalación en Linux, Windows y Mac OS en el Blog de los erreros:

http://erre-que-erre-paco.blogspot.com/2012/02/sweave-desde-un-editor-de-texto.html.

6

Figura 6: Configuración de TEXmaker.

se crea el archivo ejemplo.pdf y se abre con un visor “no estándar”.
Un detalle importante es la utilización de una codificación especial de los caracteres en los trozos de
código LATEX y en los trozos de código R. En el ejemplo se ha utilizado la instrucción

\usepackage[utf8]{inputenc}

propia de los documentos escritos en Linux. El paquete inputenx de LATEX proporciona muchas más
codificaciones. Este tipo de codificación de caracteres es más difícil de usar en los trozos de código R y
es mejor leer atentamente el apartado 3.7 del manual de Sweave.

3. Las modificaciones que produce Sweave

Ahora fijemos nuestra atención en el archivo ejemplo.tex de la figura 3. Observemos que en el archivo
se ha introducido el estilo Sweave.sty que proporciona las definiciones de los entornos del código R tanto
de entrada Sinput como de salida Soutput. Además los trozos de texto LATEX del documento original se
han copiado sin ninguna modificación.
El verdadero trabajo de Sweave se muestra en los trozos de código.
Los nombres de los trozos de código se utilizan para pasar opciones de Sweave diferentes a las previstas
por defecto y que modifican el resultado final en cada segmento. Ésta es una característica especial de
Sweave frente a la sintaxis noweb.
La opción fig=TRUE ordena a Sweave que grave un archivo en el formato PDF (por defecto) para el
gráfico creado con las instrucciones del código. Además, se escribe un \includegraphics en el archivo
LATEX para que muestre el gráfico insertado en el documento definitivo.
La opción echo=FALSE indica que el código R no se incluirá en el documento final, es decir, no hay entorno
Sinput para este trozo.
En el siguiente apartado se explican todas las posibles opciones.

7

4. Las opciones de Sweave

Las opciones controlan el modo en que el código y sus resultados (texto, figuras) se transfieren del archivo
.Rnw al archivo .tex. Todas las opciones tienen la forma clave=valor, donde el valor puede ser un
número, una palabra o string o un valor lógico. Se pueden especificar varias opciones a la vez, separadas
por comas. Las opciones lógicas pueden tomar el valor verdadero (true o TRUE o abreviadamente t o T)
o falso (false o FALSE, f o F).
Las opciones pueden especificarse de dos formas:

1. Entre los símbolos <<>> al principio del trozo de código, de manera que se modifique la apariencia

únicamente para ese trozo, o

2. En cualquier lugar de un trozo de texto con la instrucción

\SweaveOpts{opt1=valor, opt2=valor, ..., optN=valor}

que modifica los valores por defecto en el resto del documento, desde ese lugar y para todos los
siguientes trozos de código.

Además, ciertas opciones globales se pueden especificar (como una lista de clave=valor separadas por
comas) en la variable de entorno SWEAVE_OPTIONS o con el añadido --options= a la instrucción R CMD
Sweave.
Las opciones disponibles dependen del controlador en uso, pero todos los controladores deben deben
tener
  • Links de descarga
http://lwp-l.com/pdf3734

Comentarios de: Generación automática de informes con Sweave y LATEX (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad