Informes dinámicos, elegantes, rápidos y flexibles con R: knitr (Rmd, Rnw, Lyx-LATEX)

El paquete knitr: una forma de tejer nuestros informes.

El paquete knitr nos permite generar informes html y pdf mediante módulos (o "chuncks"), y así "tejer" (de ahí el icono de knitr) un documento en pequeñas funciones manejables. En particular, nos permite:

  1. obtener un informe rápido y flexible, 
  2. generar un archivo html (Rmd) o pdf (Rwn), 
  3. integrar herramientas como LATEX (el programa amigable de LATEX que recomiendo -y uso- es LyX).
En el siguiente video se muestra cómo instalar el paquete (simplemente, install.packages("knitr")) y adaptar RStudio para trabajar con él (options->cambiar de Sweave a knitr). Se detallan cómo formar los módulos para trabajar con Rmd y/o con Rnw.







En la página web de knitr podrán obtener archivos de ejemplos para descargar y aprender a usar knitr.





Generar informes pdf con código LATEX

Por ejemplo, para Rnw basta con darle las siguientes órdenes básicas:

Primero file->new->Rnw. Verás que el archivo ya comienza con la información básica que necesitas.



\documentclass{article}
\usepackage[T1]{fontenc}
 
\begin{document}
 
Here is a code chunk.
 
<<foo, fig.height=4>>=
1+1
letters
chartr('xie', 'XIE', c('xie yihui', 'Yihui Xie'))
par(mar=c(4, 4, .2, .2)); plot(rnorm(100))
@
 
You can also write inline expressions, e.g. $\pi=\Sexpr{pi}$, and \Sexpr{1.598673e8} is a big number.
 
\end{document}






Aquí está el resultado en pdf.



Generar informes html con código LATEX


Por ejemplo, para Rmd basta con darle las siguientes órdenes básicas:

Primero file->new->Rmd. Nuevamente, el archivo comienza con el código básico que necesitamos para construir el documento.







# A minimal R Markdown example
 
A quote:
 
> Markdown is not LaTeX.
 
To compile me, run this in R:
 
    library(knitr)
    knit('001-minimal.Rmd')
 
See [output here](https://github.com/yihui/knitr-examples/blob/master/001-minimal.md).
 
## code chunks
 
A _paragraph_ here. A code chunk below (remember the three backticks):
 
```{r}
1+1
.4-.7+.3 # what? it is not zero!
```
 
## graphics
 
It is easy.
 
```{r}
plot(1:10)
hist(rnorm(1000))
```
 
## inline code
 
Yes I know the value of pi is `r pi`, and 2 times pi is `r 2*pi`.
 
## math
 
Sigh. You cannot live without math equations. OK, here we go: $\alpha+\beta=\gamma$. Note this is not supported by native markdown. You probably want to try RStudio, or at least the R package **markdown**, or the function `knitr::knit2html()`.
 
## nested code chunks
 
You can write code within other elements, e.g. a list
 
1. foo is good
    ```{r}
    strsplit('hello indented world', ' ')[[1]]
    ```
2. bar is better
 
## conclusion
 
Nothing fancy. You are ready to go. When you become picky, go to the [knitr website](http://yihui.name/knitr/).
 
![knitr logo](http://yihui.name/knitr/images/knit-logo.png)






Una vez que guardes los archivos de códigos, para ver los informes solo tienes que poner en la consola de R:


library(knitr)
knit('knitr-minimal.Rnw')
knit('knitr-minimal.Rhtml')
knit('knitr-minimal.Rmd')




En próximas entradas comentaré cómo pasar de un tipo de archivo a otro y nuevas herramientas de knitr a explorar.

Saludos!

Comentarios