• No se han encontrado resultados

Creación de informes dinámicos desde R

N/A
N/A
Protected

Academic year: 2021

Share "Creación de informes dinámicos desde R"

Copied!
29
0
0

Texto completo

(1)

Creaci´

on de informes din´

amicos desde R

Manuel Oviedo de la Fuente

(2)

Tabla de Contenidos

1

Creaci´

on de vi˜

netas e informes

2

Creaci´

on de HTLM con el formato Markdown

(3)

´Indice

1

Creaci´

on de vi˜

netas e informes

2

Creaci´

on de HTLM con el formato Markdown

3

Bibliograf´ıa

(4)

Vi˜

netas

Una vi˜

neta es un documento que muestra las excelencias del paquete.

T´ıpicamente un manual paso a paso.

Por defecto, el c´

odigo de la vi˜

neta se coloca en el directorio inst\doc

o en el directorio vignettes.

El c´

odigo fuente (fichero con extensi´

on .Rnw, .Snw) se compila y

genera el PDF cuando se genera el fichero comprimido

La vi˜

neta consiste principalmente en c´

odigo L

A

TEXque se mezcla con

odigo R en chunks.

Un chunk comienza siempre con <<>>= y termina con @.

La herramienta por defecto en R es Sweave aunque la librer´ıa knitr

permite muchas m´

as opciones (por ejemplo, para usar con beamer).

(5)

Sweave I

Opciones de Sweave:

<<split=FALSE>>: Divide la salida en varias partes. (TRUE no se usa en vi˜netas de paquete).

<<echo=TRUE>>: Se imprime o no el c´odigo.

<<label=nombre>>: Nombre para el chunk que puede usarse m´as adelante. <<prefix=TRUE>>: Todos los ficheros generados tendr´an un prefijo com´un. <<prefix.string=figures/nombre>>: Prefijo de las figuras.

<<fig=TRUE>>: Se incluye una figura.

<<pdf=TRUE, png=TRUE, eps=TRUE, jpg=TRUE>>: Formato de las figuras. <<eval=TRUE>>: Se eval´ua (o no) el c´odigo.

<<results=verbatim|tex|hide>>: Como se escriben los resultados <<width=6>>: Ancho en pulgadas de los gr´aficos.

<<height=6>>: Alto en pulgadas de los gr´aficos.

\Sexpr{expr}: Se usa para escribir una expresi´on en medio del texto.

(6)

Tipos de documentos y vi˜

netas:

\documentclass[opt1,opt2,...]{tipo}

article: para art´ıculos cient´ıficos, documentaci´on de programas. beamer: para presentaciones.

report: para documentos extensos con varios cap´ıtulos, tesis. book: para libros, letter: para cartas,...

Opciones de Sweave para figuras:

<<fig=TRUE>>: Se incluye una figura.

<<pdf=TRUE, png=TRUE, eps=TRUE, jpg=TRUE>>: Formato de las figuras. <<width=6>>: Ancho en pulgadas de los gr´aficos.

<<height=6>>: Alto en pulgadas de los gr´aficos. Veamos un ejemplo.

(7)

Tipos de documentos y vi˜

netas:

\documentclass[a4paper]{article} \title{ Ejemplo 1: Sweave} \author{ Autores }

\begin{document} \maketitle

In this example we embed parts of the examples from the \texttt{kruskal.test} help page into a \LaTeX{} document : <<>>=

data(airquality,package="datasets") library("stats")

kruskal.test( Ozone ~ Month , data = airquality ) @

which shows that the location parameter of the Ozone distribution varies significantly from month to month. Finally we include a boxplot of the data:

<<fig=TRUE,echo=FALSE>>= library("graphics")

boxplot(Ozone ~ Month,data = airquality ) @

\end{document}

(8)

knitr

El paquete knitr permite la generaci´

on de informes din´

amicos con R,

combinando caracter´ısticas de otros paquetes en un solo paquete (knitr ≈

Sweave + cacheSweave + pgfSweave + weaver + animation::saveLatex +

R2HTML::RweaveHTML + highlight::HighlightWeaveLatex + 0.2 * brew

+ 0.1 * SweaveListingUtils + m´

as).

Editores para knitr http://yihui.name/knitr/demo/editors/:

RStudio: Descargar la ´

ultima versi´

on y compliar PDF con un solo clic

a trav´

es , http://yihui.name/knitr/demo/rstudio/.

Texmaker,TeXStudio: Se puede definir un comando personalizado

para procesar documentos Rnw.

(9)

knitr I

knitr permite una personalizaci´

on m´

as extensa y muchas m´

as opciones.

La funci´

on Sweave2knitr convierte c´

odigo de un formato al otro.

Opciones principales de knitr:

<<eval=TRUE|c(1,3:4)>>: Se eval´ua (o no) el c´odigo o las l´ıneas que se eval´uan. <<echo=TRUE|c(1,3:4)>>: Se imprime o no el c´odigo o las expresiones que se imprimen.

<<results=’markup’|’asis’|’hold’|’hide’>>: Como se escriben los resultados <<warnings=FALSE>>:Se escriben o no los warnings.

<<error=TRUE|FALSE>>: Debe parar R con los errores. <<split=TRUE>>: Se dividen o no los resultados. <<tidy=TRUE>>: Decora el c´odigo al escribirlo.

tidy.opts=list(keep.blank.line=FALSE, width.cutoff=60) permite elegir los detalles.

<<prompt=TRUE>>: Se incluye el prompt en los resultados. <<comment=’’>>: Car´acter para los comentarios.

(10)

knitr II

<<size=’normalsize’>>: Tama˜no de los resultados. <<background=’F7F7F7’>>: Color de fondo.

<<cache=TRUE>>: Se guarda en memoria el resultado.

(11)

Opciones de knitr para figuras

<<fig.path=’figure/’>>: Directorio donde se guardan las figuras

<<fig.keep=’high’|’all’|’none’|’first’|’last’>>: ¿Qu´e figura se guarda? <<fig.show=’asis’|’hold’|’animate’|’hide’>>: Como mostrar los plots. <<dev=’CairoPDF’>>: Un vector con los dispositivos gr´aficos: bmp, postscript, pdf, png, svg, jpeg, pictex, tiff, win.metafile, cairo pdf, cairo ps, CairoJPEG, CairoPNG, CairoPS, CairoPDF, CairoSVG, CairoTIFF, Cairo pdf, Cairo png, Cairo ps, Cairo svg, tikz. Las opciones de cada dispositivo se incluyen en dev.args.

<<fig.width=5, fig.height=6>>: Ancho y Alto en pulgadas de los gr´aficos. <<out.width=’.8, out.height=’>>: Reescalado de los gr´aficos en el texto. <<out.extra=’angle=90’>>: Lista de opciones para la salida.

<<fig.align=’center’>>: Alineamiento.

<<fig.env=’figure’, fig.cap=’Titulo’>>: Opciones para figuras. <<fig.width=5,fig.height=4,fig.align = 'center'>>=

boxplot(Ozone ~ Month,data = airquality,main="Box-Plot" ) @

(12)

....y ahora una animaci´

on con knitr

<<fig.show=’asis’|’hold’|’animate’|’hide’>>: Como mostrar los plots. <<echo=F,clock,fig.width=3, fig.height=3, out.width='.7\\linewidth', fig.show='animate', tidy=FALSE, crop=TRUE>>=

par(mar = rep(3, 4))

for (i in seq(pi/2, -4/3 * pi, length = 12)) { plot(0, 0, pch = 20, ann = FALSE, axes = FALSE) arrows(0, 0, cos(i), sin(i))

axis(1, 0, "VI"); axis(2, 0, "IX")

axis(3, 0, "XII"); axis(4, 0, "III"); box() }

@

(13)

Funciones gancho de knitr: Hooks

Son funciones que permiten personalizar la salida de knitr mediante el

objeto knit hooks. El uso b´

asico es knit_hooks$set(param = FUN),

donde param es el nombre de una opci´

on chunk, y FUN es un funci´

on.

Hay dos tipos de anzuelos: chunk hooks y output hooks.

(14)

Funciones gancho de knitr: chunk hooks

Funciones que se ejecutan antes o despu´es de un trozo de c´odigo cuando la opci´on CHUNK es no nula,

foo_hook = function(before, options, envir) {

if (before) { ## code to be run before a chunk } } else { ## code to be run after a chunk } }

Por ejemplo, para poner margenes m´as reducidos (arriba y derecha), <<setup, include=FALSE>>=

knit_hooks$set(small.mar = function(before, options, envir) { if (before) par(mar = c(4, 4, .1, .1)) })

@

LLamamos a la funci´on gancho en el siguiente CHUNK, <<miplot, small.mar=TRUE>>=

boxplot(Ozone ~ Month,data = airquality,main="Box-Plot" ) @

(15)

Funciones gancho de knitr: output hooks

Sirven para para modificar y pulir el resultado de los chunks. source: el c´odigo fuente

output: lo que sale por el terminal de R excepto advertencias, mensajes y errores

warning: mensajes de adevertencia de warning() message: mensajes de aviso de message() error: los errores del stop()

plot: salida de gr´aficos

inline: salida del c´odigo en l´ınea R chunk: toda la salida de un chunk

document: la salida de todo el documento

(16)

Funciones gancho de knitr: output hooks

<<setup, include=FALSE>>=

hook_output = knit_hooks$get("output")

knit_hooks$set(output = function(x, options) {

if (!is.null(n <- options$out.lines)) {

x = unlist(stringr::str_split(x, "\n"))

if (length(x) > n) {

# truncate the output

x = c(head(x, n), "....\n")

}

# paste first n lines together

x = paste(x, collapse = "\n")

}

hook_output(x, options)

})

(17)

´Indice

1

Creaci´

on de vi˜

netas e informes

2

Creaci´

on de HTLM con el formato Markdown

3

Bibliograf´ıa

(18)

Creaci´

on de HTLM con el formato Markdown

Markdown est´a dirigido principalmente a las p´aginas HTM y es f´acil de aprender y escribir. Ahora se trabaja en un fichero Rmd en el que los chunks vienen definidos por ```{r} y finaliza con ```.

## El argumento `before` es de tipo logico

## Si : `before == TRUE` ejecuta el codigo antes del chunk. ```{r}

knit_hooks$set(foo1 = function(before, options, envir) { if (before) {

'Antes del chunck' } else {

'Despues del chunck' }

}) ```

(19)

Creaci´

on de HTLM con el formato Markdown

R Markdown es un formato que permite una f´

acil creaci´

on de

documentos, presentaciones din´

amicas y informes de R

Combina la sintaxis de Markdown (lenguaje de marcado (markup

language) sencillo) con trozos de c´

odigo R incrustados que se ejecutan

de forma que el resultado se puede incluir en el documento final.

Los documentos de RMarkdown son totalmente reproducibles

(pueden regenerarse de forma autom´

atica cada vez que el c´

odigo o los

datos cambian)

(20)

Creaci´

on de HTLM con: Requerimientos

Una versi´

on reciente de R

Un editor de texto (por ejemplo el incorporado en RStudio)

Algunos packages adicionales de R accesibles desde el CRAN

(knitr,...)

(21)

Creaci´

on de HTLM con el formato Markdown: Esquema

del proceso

Creamos el documento RMarkdown con extensi´

on .Rmd.

El documento contiene los tags de Markdown con el texto y los

chunks de c´

odigo R

knitr procesa y produce un documento Markdown .md. El proceso

puede ejecutarse desde dentro de RStudio o con las instrucciones

library(knitr)

knit2html("myfile.Rmd")

browseURL("myfile.html)

@

knitr convierte el documento Markdown en un documento HTML

.html (por defecto) publicable o imprimible. Tambi´

en se pueden

general documentos PDF o Word.

(22)

Incorporaci´

on de ecuaciones y c´

odigo en el texto

Se puede incrustar ecuaciones LaTeX o MathML en archivos Markdown R

utilizando la siguiente sintaxis:

$$ecuaci´

on$$

y $ecuaci´

on$(para ecuaciones en l´

ınea)

<math ...> </ math>para ecuaciones MathML.

Tambi´

en puede evaluar expresiones R inline encerrando la expresi´

on dentro

de un back-tick ´

unica calificada con ’r’.

(23)

Creaci´

on de HTLM con Markdown: RStudio

(24)
(25)

Creaci´

on de tablas con RMarkdown

Una de las herramientas m´

as utilizadas es la creaci´

on de tablas a partir de

objetos de R. Es necesario tener cargado el package xtable de R.

(26)
(27)

Creaci´

on de HTLM con el formato Markdown

Otros enlaces con ejemplos de uso de markdown http://rmarkdown.rstudio.com/

http://rpubs.com/

Como convertir un Markdown en LaTex: Pandoc

Los archivos Markdown se pueden convertir a LaTeX a trav´es Pandoc y publicar un PDF utilizando la clase LaTeX de Chapman Hall,

http://johnmacfarlane.net/pandoc/installing.html. http://yihui.name/en/2013/10/markdown-or-latex/

(28)

´Indice

1

Creaci´

on de vi˜

netas e informes

2

Creaci´

on de HTLM con el formato Markdown

(29)

Bibliograf´ıa

[Sweave] Friedich Leisch (2012). Sweave User Manual. http://www.

stat.uni-muenchen.de/~leisch/Sweave/Sweave-manual.pdf.

[Rexts] R Core Team (2013). Writing R Extensions. http:

//cran.r-project.org/doc/manuals/r-devel/R-exts.html.

[knitr] Yihui Xie (2013). knitr: A General-Purpose Tool for Dynamic

Report Generation in R. http://yihui.name/knitr.

Referencias

Documento similar

En nuestra opinión, las cuentas anuales de la Entidad Pública Empresarial Red.es correspondientes al ejercicio 2012 representan en todos los aspectos

La Intervención General de la Administración del Estado, a través de la Oficina Nacional de Auditoría, en uso de las competencias que le atribuye el artículo 168

La Intervención General de la Administración del Estado, a través de la Oficina Nacional de Auditoría, en uso de las competencias que le atribuye el artículo

La campaña ha consistido en la revisión del etiquetado e instrucciones de uso de todos los ter- mómetros digitales comunicados, así como de la documentación técnica adicional de

Sistema coaxial para un patrón primario empleado en la trazabilidad de fuentes de ruido térmico, que comprende una línea de transmisión coaxial (1) y un anillo (100), estando una

Además de aparecer en forma de volumen, las Memorias conocieron una primera difusión, a los tres meses de la muerte del autor, en las páginas de La Presse en forma de folletín,

En un congrés, convé disposar d’un pla o full de ruta per tal de garantir la igualtat d’accés de totes les persones, tant ponents com participants.. Comunicació : Tant si el

Por lo tanto, en base a su perfil de eficacia y seguridad, ofatumumab debe considerarse una alternativa de tratamiento para pacientes con EMRR o EMSP con enfermedad activa