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

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
  • Para crear PDF hay dos caminos:

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

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

  • Para este curso, con html basta. Si alguien quiere PDF, typst es el camino corto

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

  • Aparecen el declarado en el YAML (Declared Formats) y los demás (Other Formats): PDF con typst, PDF con LaTeX y Word

Nota

Ahora el ejercicio: apartado a), donde se crea la carpeta, el .qmd, la cabecera y se renderiza a dos formatos.

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)

  • También se especifican opciones globales del documento, algunas específicas de cada tipo de salida (ver la referencia para html y otros formatos)

      ---
      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/
      ---

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:
se ve el código se ejecuta se ve el resultado
echo: true eval: true
echo: false eval: true no
echo: true eval: false no no

Nota

Ahora el ejercicio: apartado b), con estas tres combinaciones sobre summary(mtcars).

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)

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 forma parte del espacio de la sesión actual

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

  • Para garantizar que la sesión actual incluye sólo resultados de las celdas del .qmd, incluimos una celda inicial con include: false con

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

    • 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