[1] 1 2 3 4 5
Instituto de Ciencias Forestales (CIFOR) | INIA-CSIC (Madrid)
2025-01-09
Rmd
. Fuente: @allison_horst
.Rmd
Knit
).Rmd
Dentro de R-Studio, haz clic en Archivo → Nuevo archivo → Rmarkdown
Rmd
Rmd
Rmd
YAML, es un lenguaje de serialización de datos para todos los lenguajes de programación. Se diseño para representar datos jerárquicos pero que sea fácil de escribir y leer por humanos.
---
) al inicio y al final (a modo de bloque)Existen diferenes parámetros que se pueden especificar en el encabezado YAML, que van a definir algunas características del documento.
title
: Título del documentoauthor
: Autor del documentooutput
: Formatos de salida del documento (pdf
, word
, html
, etc). Mas información aquídate
: Fecha del documentoAlgunos parámetros van a estar condicionados por el tipo de formato de salida. Por ejemplo:
toc
: true
Mostrar la tabla de contenidos cuando la salida sea de tipo html.html_document
, podemos usar el comando ?rmarkdown::html_document
. Así, por ejemplo:.Rmd
todo lo que no esté en el encabezazo YAML o dentro de un chunk
de código, será interpretado como texto.Formato | Sintáxis | Ejemplo |
---|---|---|
Cursiva | *Texto* |
Esto es cursiva |
Negrita | **Negrita** |
Esto es negrita |
Link | [Descripción del texto](url) |
Un link |
Imágenes |  |
Una imagen ![]() |
Para crear encabezados de secciones y subsecciones has de utilizar el simbolo #
R^2^
que produce R2CO~2~
que produce CO2.Las ecuaciones pueden incluirse en la misma línea, para lo cual incluimos la ecuación entre simbolos $...$
. Por ejemplo:
En nuestro estudio utilizamos una regresión de acuerdo a \(y_i=a_i+b_iX\).
Para obtener esta ecuación hemos escrito $y_i=a_i+b_iX$
También podemos incluir ecuaciones mas complejas en párrafo aparte usando $$...$$
. Por ejemplo para obtener \[y = \mu + \sum_{i=1}^p \beta_i x_i + \epsilon\]
escribimos
$$y = \mu + \sum_{i=1}^p \beta_i x_i + \epsilon$$
Existen muchos recursos en la web sobre sintáxis markdown:
chunks
)chunks
) dentro de un documento RMarkdown permiten ejecutar diferentes análisis y mostrar resultados en el documento final..Rmd
tenemos que indicar un tipo especial de marca.chunks
)Existen dos formas de incrustar código dentro de un documento .Rmd
:
Código en línea: Código breve que se incluye en una línea escrita del documento (generalmente no mas de una línea de código)
Bloques de código (chunks
): Partes del documento que incluyen varias líneas de código. Permiten represantar gráficos, tablas, aplicar análisis estadísticos, cargar paquetes, etc.
Para incluir código en líneas hay que utilizar la siguiente sintaxis
`r `
en la que incluiremos nuestro código después de la letra r
.
Por ejemplo si escribimos:
la media de nuestro grupo es `r mean(c(1,3))`
aparecerá como:
la media de nuestro grupo es 2.
De esta forma podemos incluir resultados de análisis (e.g. p.valor de un análisis) sin tener que copiarlos a mano, reduciendo la generación de errores.
Los trozos de código se pueden utilizar para representar la salida del código en los documentos o para mostrar el código para la ilustración.
Los trozos de código pueden estar escritos en diferentes lenguajes (e.g.: shell/bash
, python
, SQL
, R
, etc.)
Para insertar un trozo de código en R, puedes escribirlo manualmente escribiendo ```{r}
seguido de ```
en la siguiente línea.
Knitr interpreta ese trozo de texto como instrucciones de R, las ejecutará y mostrará los resultados como parte del documento.
En la siguiente animación (Figura 4) puedes ver la anatomía de un trozo de código.
Existen varias formas de insertar un chunk de código:
```{r}
y ```
Cuando creamos un documento reproducible es importante identificar los diferentes trozos de código para poder ejecutarlos a lo largo de todo el documento. Esta aproximación tiene varias ventajas:
En caso de que el bloque de código produzca un gráfico, se usará el nombre del bloque para nomobrar los gráficos facilitando la reutilización de estos gráficos.
Guardar bloques específicos de código complejo y costoso de ejecutar en la caché.
En nuestro ejemplo anterior podemos añadir el nombre del chunk como 1-numero-aleatorio
:
Las salidas de los códigos pueden personalizarse con diferentes opciones. Estas opciones se suministran para cada uno de los chunks. Existen mas de 50 opciones de personalización que pueden ser consultadas aquí.
eval = FALSE
evita que el código sea evaluado. (Y, obviamente, si el código no es ejecutado no se generaran resultados). Esto es útil para mostrar códigos de ejemplo, o para deshabilitar un gran bloque de código sin comentar cada línea.
include = FALSE
ejecuta el código, pero no muestra el código o los resultados en el documento final. Se puede usar para aligerar el aspecto final de nuestro documento.
echo = FALSE
evita que se vea el código, pero sí muestra los resultados en el archivo final.
message = FALSE
o warning = FALSE
evita que aparezcan mensajes o advertencias en el archivo final.
results = 'hide'
oculta el output impreso
fig.show = 'hide'
oculta los gráficos producidos
error = TRUE
permite que se siga renderizando el documento a pesar de que exista un error en el código. Puede ser útil durante el proceso de creación de un documento reproducible
Un aspecto muy intersante de los documentos reproducibles es la inclusión de tablas. Para incluir una tabla existen diferentes opciones, siendo la función knitr::kable
la que nos permite incluir tablas de la forma mas sencilla (mas información aquí). Así por ejemplo, si escribimos
``` {{r}}
knitr::kable(
mtcars[1:5, ]
)
```
obtenemos la Tabla 1
kable
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 |
Al terminar nuestro.Rmd
escrito procedemos a tejer (knit
) el documento para que se ejecute el código y los resultados se incluyan dentro de nuestro documento.
Knit es el verbo que describe la combinación de los trozos de código, el código en línea, el markdown y la narrativa.
Para ello en la parte superior del panel, hacer click en Knit
directamente o desplegar las opciones de Knit
y ejecutar la que mas nos convenga (Figura 5, ver animación en Figura 6).
Resumen de los pasos que sigue RMarkdown para llegar al documento renderizado
Crear un informe .Rmd
que incluya las especificaciones YAML, trozos de código R (chunks
) y narraciones markdown
Pasar el archivo .Rmd
a knitr
para que ejecute los trozos de código R y cree un nuevo archivo .md
Resumen de los pasos que sigue RMarkdown para llegar al documento renderizado
.md
generado se entrega a pandoc, que creará el documento final renderizado (por ejemplo, html, Microsoft word, pdf, etc.). Pandoc es un convertidor universal de documentos y permite la conversión de un tipo de documento (en este caso: .Rmd
) a otro (en este caso: HTML)En este enlace tienes un ejemplo bastante completo.
Descarga la carpeta, descomprimela y abre el archivo ejemplo_documento_reproducible.Rmd
en RStudio.
R for Data Science en especial los capítulos 27 a 29 en su versión en castellano.
… Existen muchos más
Ayuda JDC2022-050056-I financiada por MCIN/AEI /10.13039/501100011033 y por la Unión Europea NextGenerationEU/PRTR
Si usas esta presentación puedes citarla como:
Pérez-Luque, A.J. (2025). Reproducibilidad en Ciencia. Material Docente de la Asignatura: Ciclo de Gestión de los Datos. Master Universitario en Conservación, Gestión y Restauración de la Biodiversidad. Universidad de Granada. https://ecoinfugr.github.io/ecoinformatica/
Master Universitario en Conservación, Gestión y Restauración de la Biodiversidad