Sesión 6

Reportes reproducibles con Quarto

Juan David Leongómez

Universidad El Bosque

12 de junio de 2026

Agenda

  • El problema del copiar y pegar
  • ¿Qué es Quarto?
  • Un primer documento Quarto
  • Markdown: el lenguaje del texto
  • Bloques de código
  • Código en línea
  • Formatos de salida: HTML y PDF

Parte 1

El problema del copiar y pegar

Un flujo de trabajo frágil

El flujo habitual sin herramientas de reproducibilidad:

  1. Analizas los datos en R (o peor aún, en Excel)
  2. Copias el resultado (p. ej., media = 8.3) y lo pegas en Word
  3. Redactas el informe completo
  4. Tres días después encuentras un error en los datos originales
  5. Vuelves a correr el análisis: ahora la media es 8.1
  6. ¿Cuántos valores en el Word quedaron desactualizados?
📊 analisis.R
mean(ansiedad_total) → 8.3
⬇ copiar y pegar
📄 informe.docx
"La media fue de 8.3 puntos…"
⬇ datos corregidos
mean(ansiedad_total) → 8.1 ⚠ desactualizado

Cada valor copiado a mano es potencialmente un error.

Parte 2

¿Qué es Quarto?

Texto + código = documento

Quarto es un sistema de publicación que combina texto, código y resultados en un solo archivo. Al renderizarlo, el código se ejecuta y los resultados se insertan automáticamente en el documento.

📝 documento.qmd
texto en markdown
```yrw
  código R
```
más texto…
⚙ Quarto
ejecuta el código
inserta resultados
🌐 HTML
📄 PDF
📝 Word

Cuando los datos cambian, basta con volver a renderizar. Todos los valores calculados se actualizan solos.

¿Y R Markdown?

Es posible que encuentres archivos .Rmd en tutoriales, repositorios o código de otras personas. R Markdown hace lo mismo que Quarto: combina texto y código en un documento reproducible.

Ambos son creados por Posit (la empresa detrás de RStudio). Pero Quarto es la evolución de R Markdown.

Si ves un archivo .Rmd (que significa “R Markdown”), puedes abrirli sin problema y la estructura es casi idéntica. Pero para trabajos nuevos es mejior usar Quarto (.qmd que significa “Quarto Markdown”).

Parte 3

Un primer documento Quarto

Crear un documento Quarto

En RStudio: File › New File › Quarto Document…

Aparece un cuadro de diálogo donde puedes escribir el título y el autor antes de crear el archivo. El formato por defecto es HTML, que es el más completo para empezar.

El archivo que se abre tiene tres partes:

YAML  encabezado entre ---: título, autor, formato de salida
Markdown  texto con formato: encabezados, negrita, listas…
Código  bloques ```{r}…``` que se ejecutan al renderizar

El encabezado YAML

El encabezado va al principio del archivo, entre dos líneas de ---:

---
title: "Análisis de ansiedad GAD-7"
author: "Ana García"
date: "2026-06-12"
lang: es
format: html
---

Controla el título, el autor, la fecha y el formato de salida. Todo lo que aparece debajo del segundo --- es el cuerpo del documento.

date: today inserta automáticamente la fecha en que se renderiza el documento, sin tener que escribirla a mano cada vez:

date: today

Si abres el documento en el editor visual de RStudio (botón Visual arriba a la izquierda), puedes editar el encabezado con un formulario en lugar de escribir el YAML a mano.

El editor visual

RStudio ofrece dos modos de edición del mismo archivo:

Editor visual

Interfaz similar a un procesador de texto: los botones aplican formato, los encabezados se ven como encabezados, las listas se crean con Enter. Es el modo más cómodo para empezar.

Editor de código fuente

Muestra el archivo tal como está escrito: texto con marcas de Markdown (**negrita**, # Título). Útil para ver exactamente qué está pasando.

Puedes cambiar entre los dos modos en cualquier momento con el botón Visual / Source en la esquina superior izquierda del editor. El archivo es el mismo en ambos casos.

Para este curso el editor visual es suficiente. El código fuente lo verás aparecer de forma natural a medida que uses Quarto más.

Renderizar

El botón Render (arriba en el editor) ejecuta el documento completo y abre el resultado en el navegador o en el panel Viewer de RStudio.

Desde RStudio: botón Render o atajo Ctrl+Shift+K

Desde la terminal:

quarto render mi_documento.qmd
Al renderizar, Quarto:
① ejecuta todos los bloques de código R
② convierte el Markdown a HTML (o PDF)
③ inserta los resultados en el documento
④ abre el archivo final

Si hay un error en algún bloque de código, el renderizado se detiene y muestra el error. El mensaje indica en qué bloque ocurrió.

Actividad · 5 min

Tu primer documento Quarto

  1. File › New File › Quarto Document… — título: "Mi primer análisis", formato: HTML
  2. Guárdalo en la raíz de tu proyecto curso_r (no en scripts/), como mi_reporte.qmd
  3. Haz clic en Render y observa el resultado en el navegador
  4. Cambia el título en el YAML y vuelve a renderizar

Parte 4

Markdown: el lenguaje del texto

Markdown: formato con texto plano

Markdown es la forma en que Quarto entiende el formato del texto. El editor visual lo aplica automáticamente con botones, pero conviene reconocer las marcas para entender qué está pasando.

Lo que escribes (fuente)

# Encabezado nivel 1

## Encabezado nivel 2

Texto normal, **negrita** y *cursiva*.

### Lista no ordenada

- Elemento de lista
- Otro elemento

### Lista ordenada

1. Primero
2. Segundo

[Enlace](https://r-project.org)

Lo que se ve (renderizado)

Encabezado nivel 1

Encabezado nivel 2

Texto normal, negrita y cursiva.

Lista no ordenada

  • Elemento de lista
  • Otro elemento

Lista ordenada

  1. Primero
  2. Segundo

Enlace

# y ## son encabezados del cuerpo del documento, no el título. El título, el autor y la fecha se definen en el YAML (title:, author:, date:), no con #.

Parte 5

Bloques de código

Los bloques de código

Un bloque de código (chunk) es una sección del documento donde va código ejecutable. Quarto admite R, Python, Julia, Bash y otros lenguajes, e incluso permite mezclar varios en el mismo documento. El lenguaje se indica entre llaves:

```{r}        <- R
```{python}   <- Python
```{bash}     <- Bash (terminal)

En este curso usamos R, así que nuestros bloques llevan siempre {r}:

```{r}
mean(c(3, 7, 5, 9, 4))
```

Al renderizar, el bloque se ejecuta y el resultado aparece justo debajo en el documento:

mean(c(3, 7, 5, 9, 4))
[1] 5.6

Opciones de bloque

Las opciones se escriben al inicio del bloque con #|:

Opción Por defecto Qué controla
echo true ¿Se muestra el código en el documento?
eval true ¿Se ejecuta el código?
warning true ¿Se muestran las advertencias?
message true ¿Se muestran los mensajes de carga de paquetes?
include true false ejecuta el código pero no muestra nada

Ejemplo: mostrar solo el resultado, sin el código:

```{r}
#| echo: false
mean(c(3, 7, 5, 9, 4))
```

Una figura en un documento

```{r}
#| include: false
library(tidyverse)
library(readxl)
encuesta <- read_excel(
  "datos/encuesta_bruta.xlsx", skip = 2) |>
  select(-starts_with("...")) |>
  rename_with(~ tolower(gsub(" ", "_", .)),
    starts_with("GAD")) |>
  mutate(ansiedad_total =
    gad_1 + gad_2 + gad_3 +
    gad_4 + gad_5 + gad_6 + gad_7)
```

```{r}
#| echo: false
#| fig-height: 4
#| fig-cap: "Distribución del puntaje GAD-7"
encuesta |>
  ggplot(aes(x = ansiedad_total)) +
  geom_histogram(
    fill = "#225faa", binwidth = 1
  ) +
  labs(
    x = "Puntaje total GAD-7",
    y = "Frecuencia"
  ) +
  theme_minimal()
```

Figura 1. Distribución del puntaje GAD-7

Figura 1. Distribución del puntaje GAD-7

fig-height y fig-width controlan el tamaño de la figura (en pulgadas). fig-cap añade un pie de figura numerado automáticamente.

El idioma del documento

Con fig-cap, Quarto etiqueta la figura automáticamente. El idioma de esa etiqueta depende de lang en el YAML:

Sin lang: es

format: html

La etiqueta aparece en inglés:

Figure 1: Distribución del puntaje GAD-7

Con lang: es

lang: es
format: html

La etiqueta aparece en español:

Figura 1: Distribución del puntaje GAD-7

lang: es también traduce otros textos automáticos: “Table of Contents” → “Tabla de contenidos”, “References” → “Referencias”, “Warning” → “Advertencia”, entre otros.

Parte 6

Código en línea

Insertar resultados dentro del texto

Con `r ` puedes insertar el resultado de una expresión R directamente en una oración:

La muestra incluyó `r nrow(encuesta)` participantes.
La media del puntaje GAD-7 fue `r round(mean(encuesta$ansiedad_total), 1)` puntos
(DE = `r round(sd(encuesta$ansiedad_total), 1)`).

Al renderizar, eso produce:

La muestra incluyó 180 participantes. La media del puntaje GAD-7 fue 10.3 puntos (DE = 2.7).

Cuando cambien los datos, esos valores se actualizan solos al volver a renderizar.

Actividad · 10 min

Un mini informe

  1. Verifica que encuesta_bruta.xlsx está en curso_r/datos/ (si no, cópialo ahora desde donde lo guardaste en la Sesión 3)
  2. En tu documento mi_reporte.qmd, añade una nueva sección # Resultados
  3. Inserta un bloque de código que cargue los datos con read_excel("datos/encuesta_bruta.xlsx", skip = 2) y produzca un histograma o gráfica de barras
  4. Escribe una oración con al menos un valor calculado con código en línea: número de observaciones, una media o una proporción

Parte 7

Formatos de salida

HTML: el formato principal

El formato HTML es el más completo y el más fácil de usar:

format: html

Ventajas

  • No requiere instalar nada extra
  • Admite interactividad (tablas filtrables, gráficas dinámicas)
  • Se abre en cualquier navegador
  • Es el mejor formato para compartir resultados en la web

Opciones útiles

format:
  html:
    toc: true           # tabla de contenidos
    toc-depth: 2        # niveles de encabezado
    theme: cosmo        # tema visual
    self-contained: true # un solo archivo

¿Qué es LaTeX?

LaTeX es un sistema de composición tipográfica de alta calidad creado en los años 80. A diferencia de Word, no decides cómo se ve el texto: describes el contenido con marcas y LaTeX aplica tipografía profesional de forma automática.

Es el estándar en publicación científica y académica: matemáticas, física, estadística, lingüística. La mayoría de revistas científicas aceptan o exigen archivos .tex.

No necesitas aprender LaTeX para usarlo con Quarto. Quarto genera el .tex por ti; LaTeX solo tiene que estar instalado en tu computador.

Generar archivos PDF

Generar un PDF requiere un sistema de composición tipográfica llamado LaTeX. Es el estándar en publicación académica.

El camino que recorre tu documento:

📝 .qmd
→ Pandoc →
📄 .tex
→ LaTeX →
📄 .pdf

Instalar LaTeX completo ocupa unos 4 GB. Para uso con Quarto basta con TinyTeX, una versión mínima:

install.packages("tinytex")
tinytex::install_tinytex()

Una vez instalado, solo hay que cambiar el formato en el YAML:

format: pdf

Pandoc: el traductor universal

Pandoc es la herramienta que Quarto usa internamente para convertir Markdown a cualquier formato. Viene instalado con Quarto, no tienes que hacer nada.

Entrada Salida posible
Markdown (.qmd) HTML, PDF, Word, EPUB, LaTeX, y más

Word (format: docx) es útil para compartir con colaboradores que no usan R. Para este curso nos centraremos en HTML y, cuando sea necesario, en PDF.

Puedes cambiar el formato de salida en cualquier momento modificando una sola línea del YAML. El resto del documento no cambia.

Quiz rápido

Tres preguntas antes del cierre.

Quiz · 1 de 3

Un archivo .qmd tiene tres tipos de contenido. ¿Cuál de las siguientes combinaciones es correcta?

    1. YAML · HTML · JavaScript
    1. YAML · Markdown · bloques de código R
    1. Markdown · LaTeX · bloques de código Python
    1. YAML · Word · bloques de código R

b) El encabezado YAML configura el documento (título, formato), el cuerpo usa Markdown para el texto con formato, y los bloques ```{r} ``` contienen código R que se ejecuta al renderizar.

Quiz · 2 de 3

Tienes un bloque de código con #| echo: false y #| eval: true. ¿Qué aparece en el documento renderizado?

    1. El código y su resultado
    1. Solo el código, sin el resultado
    1. Solo el resultado, sin el código
    1. Nada: echo: false desactiva el bloque completo

c) eval: true ejecuta el código, echo: false oculta el código en el documento. El resultado (figura, tabla, valor) aparece, pero el lector no ve el código que lo produjo.

Quiz · 3 de 3

Para generar un PDF con Quarto, cambias format: html por format: pdf en el YAML. ¿Qué más necesitas?

    1. Nada: Quarto incluye todo lo necesario para generar PDF
    1. Instalar Microsoft Word, que actúa como motor de conversión
    1. Instalar un sistema LaTeX, como TinyTeX (tinytex::install_tinytex())
    1. Activar un ajuste especial en RStudio desde las preferencias

c) Quarto convierte el documento a LaTeX mediante Pandoc y después LaTeX genera el PDF. Si no hay un sistema LaTeX instalado, el proceso falla. TinyTeX es una versión mínima que ocupa poco espacio y funciona perfectamente con Quarto.

Reto 2

Presenta un paquete de R

Para la Sesión 9 · Máximo 5 min · Demostración en vivo

Reto 2: presenta un paquete de R

Tu misión: encontrar un paquete de R que te llame la atención y presentárselo al grupo.

  1. ¿Cómo se llama y para qué sirve?
  2. ¿Dónde lo encontraste?
  3. Carga el paquete y ejecuta en vivo al menos una función, explicando sus argumentos y lo que produce
  4. ¿Por qué te pareció interesante, útil o simplemente raro?

El paquete ojalá sea sorprendente. R tiene más de 23 000 paquetes: algunos hacen cosas absurdas, otros hacen cosas increíbles.

→ Instrucciones completas y ejemplos de inspiración

A practicar

Antes de la próxima sesión, completa tu mini informe con los datos de la Sesión 3 o con datos propios.

El documento debe tener al menos:

  • Un encabezado YAML con título, autor y format: html
  • Una sección de introducción escrita en Markdown
  • Un bloque de código con una figura de ggplot2 y #| echo: false
  • Una oración con al menos un valor calculado con código en línea
  • El documento renderiza sin errores

Si quieres ir más lejos, cambia format: html por format: pdf en el YAML después de instalar TinyTeX, y verifica que el mismo documento se renderiza correctamente como PDF.

Para consultar la sintaxis en cualquier momento: → Guía rápida de Quarto

Hasta la próxima sesión

¡Gracias!

jdleongomez.github.io/curso-r