12.1 R Markdown

R-Markdown es recomendable para difundir análisis realizados con R en formato HTML, PDF y DOCX (Word), entre otros.

12.1.1 Introducción

R-Markdown permite combinar Markdown con R. Markdown se diseñó inicialmente para la creación de páginas web a partir de documentos de texto de forma muy sencilla y rápida (tiene unas reglas sintácticas muy simples). Actualmente gracias a múltiples herramientas como pandoc permite generar múltiples tipos de documentos (incluido LaTeX; ver Pandoc Markdown)

Para más detalles ver http://rmarkdown.rstudio.com.

También se dispone de información en la ayuda de RStudio:

  • Help > Markdown Quick Reference

  • Help > Cheatsheets > R Markdown Cheat Sheet

  • Help > Cheatsheets > R Markdown Reference Guide

Al renderizar un fichero rmarkdown se generará un documento que incluye el código R y los resultados incrustados en el documento. En RStudio basta con hacer clic en el botón Knit HTML. En R se puede emplear la funcion render del paquete rmarkdown (por ejemplo: render("8-Informes.Rmd")). También se puede abrir directamente el informe generado:

library(rmarkdown)
browseURL(url = render("8-Informes.Rmd"))

12.1.2 Inclusión de código R

Se puede incluir código R entre los delimitadores ```{r} y ```. Por defecto, se mostrará el código, se evaluará y se mostrarán los resultados justo a continuación:

head(mtcars[1:3])
##                    mpg cyl disp
## Mazda RX4         21.0   6  160
## Mazda RX4 Wag     21.0   6  160
## Datsun 710        22.8   4  108
## Hornet 4 Drive    21.4   6  258
## Hornet Sportabout 18.7   8  360
## Valiant           18.1   6  225
summary(mtcars[1:3])
##       mpg             cyl             disp      
##  Min.   :10.40   Min.   :4.000   Min.   : 71.1  
##  1st Qu.:15.43   1st Qu.:4.000   1st Qu.:120.8  
##  Median :19.20   Median :6.000   Median :196.3  
##  Mean   :20.09   Mean   :6.188   Mean   :230.7  
##  3rd Qu.:22.80   3rd Qu.:8.000   3rd Qu.:326.0  
##  Max.   :33.90   Max.   :8.000   Max.   :472.0

En RStudio pulsando “Ctrl + Alt + I” o en el icono correspondiente se incluye un trozo de código.

Se puede incluir código en línea empleando `r código`, por ejemplo `r 2 + 2` produce 4.

12.1.3 Inclusión de gráficos

Se pueden generar gráficos:

Los trozos de código pueden tener nombre y opciones, se establecen en la cabecera de la forma ```{r nombre, op1, op2} (en el caso anterior no se muestra el código, al haber empleado ```{r, echo=FALSE}). Para un listado de las opciones disponibles ver http://yihui.name/knitr/options.

En RStudio se puede pulsar en los iconos a la derecha del chunk para establecer opciones, ejecutar todo el código anterior o sólo el correspondiente trozo.

12.1.4 Inclusión de tablas

Las tablas en markdown son de la forma:

| First Header  | Second Header |
| ------------- | ------------- |
| Row1 Cell1    | Row1 Cell2    |
| Row2 Cell1    | Row2 Cell2    |

Por ejemplo:

Variable Descripción
mpg Millas / galón (EE.UU.)
cyl Número de cilindros
disp Desplazamiento (pulgadas cúbicas)
hp Caballos de fuerza bruta
drat Relación del eje trasero
wt Peso (miles de libras)
qsec Tiempo de 1/4 de milla
vs Cilindros en V/Straight (0 = cilindros en V, 1 = cilindros en línea)
am Tipo de transmisión (0 = automático, 1 = manual)
gear Número de marchas (hacia adelante)
carb Número de carburadores

Para convertir resultados de R en tablas de una forma simple se puede emplear la función kable del paquete knitr:

knitr::kable(
  head(mtcars), 
  caption = "Una kable knitr"
)
Tabla 12.1: Una kable knitr
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1

Otros paquetes proporcionan opciones adicionales: xtable, stargazer, pander, tables y ascii.

12.1.5 Extracción del código R

Para generar un fichero con el código R se puede emplear la función purl del paquete knitr. Por ejemplo:

purl("8-Informes.Rmd")

Si se quiere además el texto rmarkdown como comentarios tipo spin, se puede emplear:

purl("8-Informes.Rmd", documentation = 2)