Ir al contenido

Introducción a Rmarkdown

9 mins· 0 · 0 ·
R Markdown Rstudio
Autor
Jan Dimter
Sociologist from Universidad de Chile. Assistant researcher at IMFD.
Tabla de contenido

1. Introducción a RMarkdown #

Origen y Aplicaciones #

RMarkdown emerge como una extensión del lenguaje Markdown, integrada con el entorno de R para permitir la inclusión y ejecución de código R en documentos de texto. Las aplicaciones son múltiples: desde la creación de informes y presentaciones hasta la publicación académica y la construcción de páginas web. Se presenta como una solución que amalgama texto, código y resultados de dicho código en un solo documento, facilitando el análisis reproducible.

Diferencias entre Markdown y RMarkdown #

Aunque ambos parten del mismo núcleo de sintaxis Markdown, RMarkdown va más allá al permitir la integración de bloques de código R que pueden ser ejecutados durante la compilación del documento. Esta capacidad convierte a RMarkdown en una herramienta poderosa para el análisis de datos, la visualización y la ciencia de datos, entre otros.


2. Instalación y Requisitos #

Instalación del paquete rmarkdown en R #

Para empezar con RMarkdown, es esencial instalar el paquete rmarkdown desde CRAN. Esto se logra fácilmente con el comando install.packages("rmarkdown") ejecutado en la consola de R.

Dependencias y Software Adicional #

Además del paquete rmarkdown, es posible que se requieran otras dependencias, como Pandoc para la conversión de formatos y LaTeX para la generación de documentos PDF. Estas dependencias a menudo se instalan automáticamente o se ofrecen instrucciones claras para su instalación manual.


3. Estructura Básica de un Documento RMarkdown #

Cabecera YAML #

Todo documento RMarkdown comienza con una cabecera YAML (acrónimo de “YAML Ain’t Markup Language”), encerrada entre dos líneas de tres guiones. Esta sección contiene metadatos que controlan aspectos como el formato de salida, el título del documento y opciones adicionales. Un ejemplo básico podría ser:

---
title: "Mi Primer Documento RMarkdown"
author: "Nombre del Autor"
date: "Fecha"
output: html_document
---

Secciones y Subsecciones #

Similar a Markdown, RMarkdown utiliza el símbolo # para definir encabezados de diferentes niveles, lo que permite estructurar el documento en secciones y subsecciones. Por ejemplo:

# Sección 1
## Subsección 1.1
### Subsección 1.1.1

Inclusión de Código R #

Una de las características más distintivas de RMarkdown es la habilidad de incorporar bloques de código R en el documento. Estos bloques se delimitan mediante “fences” de acentos graves, seguidos de {r} para indicar que se trata de código R. Aquí un ejemplo simple:

```r
# Esto es un bloque de código R
summary(mtcars)
```

```
##       mpg             cyl             disp             hp       
##  Min.   :10.40   Min.   :4.000   Min.   : 71.1   Min.   : 52.0  
##  1st Qu.:15.43   1st Qu.:4.000   1st Qu.:120.8   1st Qu.: 96.5  
##  Median :19.20   Median :6.000   Median :196.3   Median :123.0  
##  Mean   :20.09   Mean   :6.188   Mean   :230.7   Mean   :146.7  
##  3rd Qu.:22.80   3rd Qu.:8.000   3rd Qu.:326.0   3rd Qu.:180.0  
##  Max.   :33.90   Max.   :8.000   Max.   :472.0   Max.   :335.0  
##       drat             wt             qsec             vs        
##  Min.   :2.760   Min.   :1.513   Min.   :14.50   Min.   :0.0000  
##  1st Qu.:3.080   1st Qu.:2.581   1st Qu.:16.89   1st Qu.:0.0000  
##  Median :3.695   Median :3.325   Median :17.71   Median :0.0000  
##  Mean   :3.597   Mean   :3.217   Mean   :17.85   Mean   :0.4375  
##  3rd Qu.:3.920   3rd Qu.:3.610   3rd Qu.:18.90   3rd Qu.:1.0000  
##  Max.   :4.930   Max.   :5.424   Max.   :22.90   Max.   :1.0000  
##        am              gear            carb      
##  Min.   :0.0000   Min.   :3.000   Min.   :1.000  
##  1st Qu.:0.0000   1st Qu.:3.000   1st Qu.:2.000  
##  Median :0.0000   Median :4.000   Median :2.000  
##  Mean   :0.4062   Mean   :3.688   Mean   :2.812  
##  3rd Qu.:1.0000   3rd Qu.:4.000   3rd Qu.:4.000  
##  Max.   :1.0000   Max.   :5.000   Max.   :8.000
```

Durante la compilación del documento, el código se ejecuta y los resultados (tablas, gráficos, etc.) se insertan directamente en el documento de salida.

Esta estructura básica sienta las bases para desarrollar documentos más complejos y versátiles en RMarkdown, abriendo la puerta a un sinfín de posibilidades que van desde el análisis de datos hasta la comunicación efectiva de resultados.


4. Formatos de Salida #

HTML #

La salida en formato HTML es una de las más versátiles y comúnmente usadas. Permite la incorporación de elementos interactivos y se puede visualizar en cualquier navegador web. Para especificar este formato, se usa la siguiente configuración en la cabecera YAML:

output: html_document

PDF #

La generación de documentos PDF es otra opción popular, especialmente para trabajos académicos o informes formales. La compilación a PDF generalmente requiere una instalación de LaTeX en el sistema. En el YAML, se especificaría así:

output: pdf_document

Word #

Para quienes necesitan compartir documentos en un formato ampliamente utilizado como Microsoft Word, RMarkdown ofrece esta posibilidad. Basta con ajustar la cabecera YAML de la siguiente manera:

output: word_document

Presentaciones #

Más allá de los documentos estáticos, RMarkdown también puede usarse para crear presentaciones dinámicas. Existen varias opciones para esto, incluyendo formatos como ioslides y beamer. Un ejemplo en YAML sería:

output: ioslides_presentation
Diferencia entre ioslides y beamer #

ioslides y beamer son dos formatos de presentación disponibles en RMarkdown, pero tienen diferencias notables en aspectos como la estética, la funcionalidad y las dependencias.

ioslides #
  • Estética y Funcionalidad: ioslides genera presentaciones en HTML5, lo que permite una fácil incorporación de elementos interactivos y multimedia. El resultado es una presentación visualmente moderna que se puede abrir en cualquier navegador web.

  • Dependencias: Al ser un formato basado en HTML, no se requieren dependencias adicionales como LaTeX para su compilación.

beamer #
  • Estética y Funcionalidad: beamer produce presentaciones en PDF utilizando el sistema LaTeX. Es especialmente útil para contextos académicos donde se necesita una gran cantidad de símbolos matemáticos o un formato más tradicional.

  • Dependencias: La compilación a beamer generalmente requiere una instalación de LaTeX en el sistema, lo que podría considerarse una barrera de entrada para algunos usuarios.


5. Integración de Código R #

Bloques de Código #

La incorporación de bloques de código R en un documento RMarkdown es uno de sus rasgos más distintivos. Estos bloques se delimitan mediante “fences” de acentos graves y se etiquetan con {r} para indicar que contienen código R. Este mecanismo permite ejecutar el código durante la compilación del documento, insertando los resultados directamente en la salida.

Opciones de knitr #

La paquetería knitr es la encargada de procesar los bloques de código en RMarkdown. Ofrece una amplia gama de opciones para controlar el comportamiento del código y la visualización de los resultados. Por ejemplo, el uso de echo=FALSE dentro del bloque de código evitará que el código en sí se muestre en la salida final:

plot(mtcars$mpg, mtcars$wt)

Parámetro Descripción Default
echo Controla si el código del bloque se muestra en el documento final. TRUE
eval Determina si el código del bloque se ejecuta durante la compilación. TRUE
results Controla cómo se muestran los resultados (e.g., ‘hide’, ‘asis’). 'markup'
include Indica si tanto el código como los resultados deben incluirse en el documento final. TRUE
message Especifica si los mensajes generados por el código se muestran. TRUE
warning Controla si las advertencias generadas por el código se incluyen en el documento. TRUE
fig.cap Añade un pie de foto a las figuras generadas por el bloque de código. NULL
fig.height Establece la altura de la figura generada, en pulgadas. 7
fig.width Establece la anchura de la figura generada, en pulgadas. 7
cache Permite el almacenamiento en caché del bloque de código para evitar su reevaluación. FALSE

Opciones Globales de knitr #

Además de los parámetros que se pueden establecer a nivel de bloque, es relevante mencionar que knitr permite configurar opciones globales que se aplicarán a todos los bloques de código en el documento. Esto es especialmente útil para mantener un estilo y formato coherentes sin tener que establecer los mismos parámetros repetidamente en múltiples bloques de código. La función opts_chunk$set se usa para definir estas opciones globales:

Este bloque de configuración, generalmente ubicado al inicio del documento, asegura que todas las opciones definidas se apliquen de manera uniforme, proporcionando así una forma eficiente de manejar la presentación de bloques de código en el documento completo.

Incorporación de Metadatos Personalizados #

Aunque el encabezado YAML maneja muchos metadatos comunes como el título, el autor y la fecha, es posible extender esta funcionalidad para incluir campos personalizados o incluso código R que se ejecuta antes de procesar el documento. Esto puede ser útil para casos específicos que requieran metadatos adicionales o configuraciones previas.

Resultados en Línea #

Además de los bloques de código, es posible insertar código R directamente en el flujo del texto utilizando el símbolo de acento grave para delimitarlo y la función r seguida del código. Este enfoque es útil para reportar estadísticas o resultados de manera más fluida en el texto. Por ejemplo:

La media del conjunto de datos es 20.090625.

Este mecanismo de integración de código permite una gran flexibilidad para incorporar análisis de datos, visualizaciones y otros elementos computacionales directamente en el documento, facilitando un enfoque más dinámico y reproducible para la comunicación de información.


6. Visualización de Datos #

Datos de ejemplo:

# Crear un conjunto de datos de ejemplo
meses <- c("Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic")
ventas <- c(200, 220, 250, 275, 300, 320, 350, 370, 400, 420, 450, 480)
datos <- data.frame(meses, ventas)

Incorporación de Gráficos Estáticos #

Generar visualizaciones es una de las fortalezas de R, y su integración en RMarkdown es fluida. Al usar funciones de trazado como plot() o ggplot2, los gráficos resultantes se insertan automáticamente en el documento de salida en la posición del bloque de código que los genera.

library(ggplot2)
ggplot(datos, aes(x = meses, y = ventas, group = '1')) +
  geom_line() +
  geom_point() +
  theme_minimal()

Gráficos Interactivos #

Para proyectos que requieren una mayor interacción del usuario, RMarkdown es compatible con gráficos interactivos creados con librerías como plotly o highcharter. Estos gráficos permiten explorar datos de forma más dinámica directamente en el documento HTML generado.

library(plotly)
fig <- ggplot(datos, aes(x = meses, y = ventas, group = '1')) +
  geom_line() +
  geom_point()+
  theme_minimal()
ggplotly(fig)

Personalización de Gráficos #

Más allá de las funciones estándar de trazado, RMarkdown permite un alto grado de personalización en las visualizaciones. Se pueden usar parámetros en el bloque de código para ajustar aspectos como dimensiones, resolución y formato de los gráficos. Este control sobre las visualizaciones facilita la adaptación de los gráficos a las necesidades específicas del documento.

ggplot(datos, aes(x = meses, y = ventas, group = '1')) +
  geom_line() +
  geom_point() +
  theme_minimal() +
  ggtitle("Ventas Mensuales en 2022") +
  xlab("Meses") +
  ylab("Ventas")
ggplot(datos, aes(x = meses, y = ventas, group = '1')) +
  geom_line() +
  geom_point() +
  theme_minimal() +
  ggtitle("Ventas Mensuales en 2022") +
  xlab("Meses") +
  ylab("Ventas")

Exportación de Gráficos #

Si bien los gráficos se integran en el documento final, en ocasiones podría ser necesario exportarlos como archivos independientes. Para este fin, se pueden utilizar funciones específicas de R o paquetes adicionales como ggsave para guardar las visualizaciones en diversos formatos como PNG, JPEG o PDF.

El tratamiento de la visualización de datos en RMarkdown no solo abarca una amplia gama de opciones para crear gráficos, sino que también ofrece una serie de herramientas para personalizarlos y exportarlos, lo que lo convierte en un entorno muy versátil para la comunicación de análisis de datos.

g <- ggplot(datos, aes(x = meses, y = ventas)) +
  geom_line() +
  geom_point()
ggsave("ventas_mensuales.png", plot = g)

Relacionados

Introducción a R & Rstudio
10 mins· 0 · 0
R Rstudio Languages
R fue desarrollado principalmente como un lenguaje para el análisis estadístico y contiene una amplia variedad de funciones y paquetes para estadísticas tradicionales y modernas.
Introducción a Selenium en Python
13 mins· 0 · 0
Python Selenium Webscraping
Selenium es un marco de trabajo (framework) de código abierto que se utiliza para automatizar las pruebas de las aplicaciones web. Proporciona una forma de interactuar con los elementos web de una página de manera programática, es decir, puede hacer clic en botones, rellenar formularios, leer texto, entre otros, tal como lo haría un usuario humano.
Introducción a Beautifulsoup en Python
5 mins· 0 · 0
Python Beautifulsoup Webscraping
BeautifulSoup es una biblioteca de Python que permite extraer información de archivos HTML y XML. Fue diseñada para hacer que el webscraping, o la extracción de datos de sitios web, sea más accesible y fácil de hacer. BeautifulSoup convierte los archivos HTML y XML en árboles de parseo, que son estructuras de datos que representan la jerarquía de los elementos en el archivo.
comments powered by Disqus