Reportes reproducibles

Es posible que en tu trabajo tengas que presentar informes o resultados de tu análisis de datos. Tal vez te hayas encontrando guardando una y otra vez gráficos y tablas o copiando resultados de un archivo al otro hasta que el informe quedó como querías. Los archivos y el paquete RMarkdown o desde hace poco Quarto vienen al rescate.

Un archivo de R Markdown (generalmente con la extensión .Rmd), a diferencia de un script .R, es un archivo de texto plano que combina código de R que genera resultados (gráficos, tablas, etc…) y el texto que lo describe. Al poder intercalar cálculos y gráficos con su análisis o explicación, se unifica el flujo de trabajo y deja de ser necesario guardar figuras o tablas para luego insertarlas en un documento de texto. Esto es muy importante si buscamos que nuestro trabajo sea reproducible, pero además ahorra tiempo.

Creando archivos .Rmd

En RStudio podés crear un nuevo archivo de R Markdown con el menú desplegable:

Instrucciones

File → New File → R Markdown

Y se abrirá un menú donde podés agregar el título de tu informe y tu nombre. Por ahora vamos a usar el formato HTML como salida, pero hay muchos otros formatos de salida posibles.

Al aceptar, se abrirá un nuevo archivo con una plantilla de ejemplo (en inglés).

Un archivo de Quarto (generalmente con la extensión .qmd), a diferencia de un script .R, es un archivo de texto plano que combina código de R que genera resultados (gráficos, tablas, etc…) y el texto que lo describe. Al poder intercalar cálculos y gráficos con su análisis o explicación, se unifica el flujo de trabajo y deja de ser necesario guardar figuras o tablas para luego insertarlas en un documento de texto. Esto es muy importante si buscamos que nuestro trabajo sea reproducible, pero además ahorra tiempo. Una ventaja por sobre R Markdown es que Quarto es independiente del lenguaje de programación. En este caso estamos usando R y RStudio pero podríamos trabajar con python y notebooks de jupyter y aprovechar Quarto.

Creando archivos .qmd

En RStudio podés crear un nuevo archivo de Quarto con el menú desplegable:

Instrucciones

File → New File → Quarto Document

Y se abrirá un menú donde podés agregar el título de tu informe y tu nombre. Por ahora vamos a usar el formato HTML como salida, pero hay muchos otros formatos de salida posibles.

Al aceptar, se abrirá un nuevo archivo con una plantilla de ejemplo (en inglés).

Ejercicio

Primer desafío: Creá un nuevo archivo R Markdown

Revisá la plantilla que trae el documento. ¿Podés identificar los bloques de código?

Para generar el archivo de salida, el paquete knitr (que viene de tejer en inglés) ejecutará el código en una sesión independiente de R e interpretará el texto, su formato y cualquier otra cosa que agreguemos (por ejemplo imágenes o links externos). Esto significa que nuestro archivo debe tener todo lo necesario para generar el análisis y si nos olvidamos de algo va a dar error.

Por esta razón es recomendable knitear o renderizar el archivo seguido, para encontrarnos con los errores a tiempo y de paso asegurarnos que el análisis es reproducible.

Ejercicio

Segundo desafío: renderizá tu documento de R Markdown

Aprovechando la plantilla de RStudio, obtené el archivo de salida en formato HTML haciendo click en el botón Render (el que tiene una flecha celeste que apunta a la derecha!).

Estructura de un .Rmd

Cualquier archivo de este tipo tiene 3 partes principales:

  • El encabezado o yaml que determina que pinta tendrá el archivo de salida, por ejemplo en formato html. También se puede incluir información sobre el autor, la fecha, si queremos o no una tabla de contenidos y muchas cosas más. Hay pequeñas diferencias entre R Markdown y Quarto.
  • El texto o prosa ya que puede estar a lo largo de todo el documento. Para darle formato a los títulos o por ejemplo resaltar parte del texto usando negrita se usa Markdown, un lenguaje que a diferencia de html es legible aún si no está compilado o en su versión final.
  • El código en bloques o chuncks. Dentro de un chunk el código de R puede ejecutarse al igual que en un script normal y cualquier comentario o explicación debe tener al principio un # para que R lo interprete correctamente.