Tema 01 - Informes reproducibles con Quarto

Muestreo y Análisis de Datos - Curso 2026/27
Universidad de Alicante

Pedro Albarrán

Dpto. de Fundamentos del Análisis Económico. Universidad de Alicante

Luis Pérez

El sistema de publicaciones Quarto

  • Orientado al análisis de datos reproducible: combina código, resultados y comentarios

  • Útil como cuaderno de trabajo del código y para comunicar resultados en un documento final para tomar decisiones

  • Instalar Quarto para vuestro sistema operativo desde aquí

    • la web pide después elegir un editor: en Positron no hay que hacer nada más, ya trae la extensión de Quarto incorporada
  • La guía y referencia completa de Quarto están en su Web

  • Un documento de Quarto se renderiza, procesando cada componente (código, resultado de ejecutarlo y texto) para producir documentos en varios formatos: html, PDF, Word, presentaciones, etc.

Documentos de Quarto: Crear y Guardar

  • Se trabaja dentro de la carpeta del proyecto (File > Open Folder); el documento se crea en File > New File… > Quarto Document y se guarda con extensión .qmd (Ctrl+S)

  • Se renderiza con el botón Preview (Ctrl+Shift+K)

  • El resultado sale en el visor de la derecha y, a la vez, se crea el fichero en la carpeta del proyecto

  • Para verlo como lo verá quien lo reciba, abridlo con doble clic desde el explorador de archivos del sistema: el .html se abre en el navegador, y un .pdf o .docx en su programa

1 Preview · 2 guardar · 3 el fichero creado · 4 el visor

Documentos de Quarto: formato de salida

  • El renderizado crea un archivo en el mismo directorio donde está el archivo de Quarto .qmd

  • En el caso de HTML, se crea tanto un archivo con extensión .html como un subdirectorio del mismo nombre con componentes necesarios (ej., imágenes, css)

    • solo podemos visualizar correctamente el archivo .html en cualquier navegador si copiamos a otro lugar tanto el .html como el subdirectorio
  • Los formatos de salida posibles son html (el que viene por defecto), Word y PDF. Más adelante veremos dónde se elige

  • Para PDF hay dos caminos:

    • por LaTeX, que hay que instalar una vez (en la pestaña Terminal, a la derecha de la consola): quarto install tool tinytex

    • por typst, que no necesita instalar nada: Quarto ya lo trae incorporado, y es mucho más rápido

  • Para este curso, con html basta. Word y typst tampoco necesitan instalar nada

Elegir el formato desde Preview

  • Preview es un desplegable: su flecha abre Preview Format…, que lista los formatos y renderiza al que se elija, sin tocar la cabecera

  • Aparece el que ya lleva el documento (Declared Formats) y los demás (Other Formats): PDF con typst, PDF con LaTeX y Word

Nota

Ahora el ejercicio: apartado a), puntos i, ii, iv y v: crear la carpeta y el documento, guardarlo con su nombre y renderizarlo.

Documentos de Quarto: Texto con Markdown

  • Los componentes de texto están escritos en Markdown: un conjunto ligero de convenciones para archivos de texto sin formato. Por ejemplo,

    • todo lo escrito entre dos * como **Hola** se renderiza en negritas

    • se utiliza # para indicar encabezados de secciones

  • Una descripción completa, en la web de Quarto (Markdown Basics); también es útil este libro online.

  • Positron incorpora un editor visual de documentos de Quarto, similar a un procesador de texto

    • un ventaja del modo no visual es el número de línea, para errores

Editor Visual de Quarto en Positron

  • Un .qmd se edita de dos formas: el texto tal cual (modo source), como hasta ahora, o en modo visual, ya con su formato

  • Edit in Visual Mode está en el menú ... del editor, arriba a la derecha, y en el menú contextual que sale al pulsar el botón derecho sobre el documento

  • Para volver, la misma entrada dice Edit in Source Mode

Atajo: Ctrl+Shift+F4. También en la paleta de comandos (Ctrl+Shift+P)

La barra del editor visual

  • Solo en modo visual aparece esta barra de herramientas:
  • Desde ella se accede a

    • formatos de texto (negritas, cursivas, encabezamientos) y listas
    • insertar enlaces, imágenes, notas a pie de página, tablas
    • incluir ecuaciones (en LaTeX)
    • también insertar directamente código HTML, comentarios, etc.
  • Lo que se escribe en modo visual es el mismo fichero: al volver a source se ve el Markdown que ha generado

Formato en la cabecera: el bloque YAML

  • Al principio del documento, entre dos líneas con ---, se pueden especificar varias opciones del documento: título, autor, fecha, formato de salida

    • en modo visual se inserta desde Insert > YAML Metadata…, sin escribir los ---
  • Los formatos de salida son html, pdf, docx (y otros en Quarto Presentations), y también opciones globales, algunas propias de cada formato (referencia)

      ---
      title: "Título"
      author: Autor
      date: 15-octubre-2025
      format:
        html:
          toc: true              # índice
          number-sections: true  # secciones numeradas
          embed-resources: true  # archivo html autocontenido
          theme: united          # más temas: https://bootswatch.com/3/
      ---

Y ahora el resto del apartado a): iii, vi y vii.

Fragmentos o celdas de código

  • El documento lleva código de R que Quarto ejecuta al renderizar; hay dos formas, según dónde deba salir el resultado

  • Código en línea: un valor dentro de una frase (“la media es 20.09”); icono </> de la barra, o Insert > Any… (Ctrl+/) y escribir inline

  • Una celda: bloque de código aparte, el resultado sale debajo (Insert > Executable Cell > R)

  • En modo source ambas se escriben a mano: el código en línea, con `r ` y dentro el código; la celda, entre ```{r} y ```

Opciones de una celda

  • Van dentro de la celda, en sus primeras líneas, precedidas de #| (almohadilla y barra vertical; con # a secas es un comentario y la opción NO se aplica)
```{r}
#| echo: false
mean(mtcars$mpg)
```
  • echo (¿se ve el código?) y eval (¿se ejecuta?) son independientes:
echo eval se ve el código se ejecuta se ve el resultado
true true sí sí sí
false true no sí sí
true false sí no no

Otras opciones de celda

  • output: false oculta solo el resultado; include: false no muestra nada, pero sí ejecuta

  • message, warning y error: si se muestra lo que R va contando por el camino

  • label: una etiqueta para identificar la celda

  • code-fold: true oculta el código pero da opción a mostrarlo

  • Cómo mostrar resultados de texto y numéricos:

    • results: hide (no mostrar)
    • results: hold (mostrar todo, no el resultado de cada línea)

La primera celda del documento

  • Todo documento empieza con una celda que prepara el entorno: ahí se declaran las bibliotecas que se van a usar y se ejecuta lo que necesiten las demás celdas

  • Lleva include: false: se ejecuta, pero no se ve ni ella ni sus mensajes

```{r}
#| include: false
library(AER)
```
  • Hace falta porque al renderizar se abre una sesión de R nueva y vacía: el documento no ve nada de lo que tengáis en la consola y tiene que cargar lo suyo

  • Cogedlo como costumbre: primera celda, entorno preparado. Vale para el resto del curso

Nota

Ahora el ejercicio: apartado b), empezando por esa primera celda.

Opciones de presentación

  • fig-cap y tbl-cap para los títulos de las figuras y tablas

  • Cómo mostrar los gráficos: fig-show

    • hide y hold son como en results
    • asis muestra el gráfico como se generó
    • animate concatena varios gráficos en una animación
  • fig-width y fig-height: dimensiones (reales, en pulgadas) de una figura

  • out-width y out-height: ídem en el documento de salida (% de las reales)

  • Lista completa de opciones aquí

Opciones para figuras

  • fig-align: mostrar la figura centrada o alineada a derecha o izquierda

  • layout-ncol: en cuántas columnas se componen los resultados

library(ggplot2)
ggplot(cars) + geom_histogram(aes(x = speed))
ggplot(cars) + geom_histogram(aes(x = dist))

Nota

Ahora el ejercicio: apartado c), los dos gráficos uno al lado del otro con layout-ncol.

Opciones globales para todas las celdas

  • En la cabecera, especificamos opciones por defecto para las celdas de código

    • p.e., de ejecución como echo, eval, etc. en execute (ver aquí y aquí)

      ---
      execute:
        echo: false
        warning: false
      ---
    • También otras opciones que ya hemos visto (aquí listado completo para html)

      ---
      format:
        html:
          code-fold: true
          cap-location: bottom
          fig-align: center
          df-print: paged      # cómo visualizar tablas
      ---

Ejecución de código en un documento .qmd

  • Renderizar un .qmd crea un espacio de trabajo para ejecutar el código distinto del de nuestra consola (diferentes objetos, bibliotecas, etc.)

    • si no estamos en la carpeta correcta, el directorio de trabajo puede ser diferente
  • Comprobamos los resultados del código del .qmd ejecutándolo sin renderizar: línea a línea (Ctrl + Enter), o con los enlaces que aparecen sobre cada celda: Run Cell (esa celda), Run Above (todas las anteriores) y Run Next Cell

    • así, el código pasa a la consola y sí forma parte del espacio de la sesión actual

    • nos aseguramos de que no hay errores (ej., objetos previos no definidos)

  • La celda inicial que ya hemos visto sirve también para esto: como lleva include: false, se puede poner en ella

    • rm(list = ls()): al ejecutar todas las celdas previas, empezamos con una sesión sin objetos previos, sólo con lo del .qmd

    • Todas las bibliotecas que se usen en varias celdas (con library(), como en el Tema 00)

Mejorar la salida de tablas

  • La salida “en crudo” de R es correcta y poco presentable. knitr::kable() la convierte en una tabla con formato:
knitr::kable(head(mtcars[, 1:5]))
  • kableExtra añade estilos, anchos, cabeceras agrupadas… (guía)

  • Primero que el número sea el correcto; después, que la tabla se vea bien

Nota

Ahora el ejercicio: apartados d) y e): mostrar mtcars con kbl() y comparar con la salida cruda, y luego las opciones de cabecera (df-print: paged, code-fold, tema).

Comentarios finales

  • Dashboards (tableros): son presentaciones visuales e interactivas de los resultados claves de un análisis que permiten una comunicación más efectiva

  • Jupyter Notebook: son otra forma de combinar texto, código y resultados en un documento. Desarrollados para Python, admiten varios lenguajes de programación (como Quarto)

    • se crean, visualizan y ejecutan en navegadores web, pero son fácilmente modificables, localmente u online en JupyterLab o con Google Colab

    • Quarto renderiza libros de Jupyter, creados en .qmd o en su propio formato

  • Muchas herramientas están preparadas para Python y R porque se usan a menudo indistintamente o combinados