R Markdown
Actualización 14-10-18: Una versión actualizada de este post está disponible aquí: https://rubenfcasal.github.io/bookdown_intro/rmarkdown.html.
Introducción
Markdown permite 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).
Este documento se ha generado empleando Markdown y R
.
R-Markdown es recomendable para difundir análisis realizados con R
en formato
HTML, PDF y DOCX (Word), entre otros.
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"))
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.
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.
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 ktable
del paquete knitr:
knitr::kable(
head(mtcars),
caption = "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.
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)
Spin
Una forma rápida de crear este tipo de informes a partir de un fichero de código R es emplear la funcion
spin
del paquete knitr (ver p.e. http://yihui.name/knitr/demo/stitch).
Para ello se debe comentar todo lo que no sea código R de una forma especial:
El texto rmarkdown se comenta con
#'
. Por ejemplo:#' # Este es un título de primer nivel #' ## Este es un título de segundo nivel
Las opciones de un trozo de código se comentan con
#+
. Por ejemplo:#+ setup, include=FALSE opts_chunk$set(comment=NA, prompt=TRUE, dev='svg', fig.height=6, fig.width=6)
Para generar el informe se puede emplear la funcion spin
del paquete knitr. Por ejemplo: spin("Ridge_Lasso.R"))
.
También se podría abrir directamente el informe generado:
browseURL(url = knitr::spin("Ridge_Lasso.R"))
Pero puede ser recomendable renderizarlo con rmarkdown:
library(rmarkdown)
browseURL(url = render(knitr::spin("Ridge_Lasso.R", knit = FALSE)))
En RStudio basta con pulsar “Ctrl + Shift + K” o seleccionar File > Knit Document (en las últimas versiones también File > Compile Notebook o hacer clic en el icono correspondiente).