Reportes Parametrizados

Al principio de este taller vimos un reporte de ejemplo donde se analizaban algunas características de la especie de pingüino Papúa. Si quisiéramos replicar el mismo informe pero para alguna de las otras 2 especies de pingüinos que incluye la base de datos, tendríamos que cambiar la palabra “Papua” que aparece varias veces en el código y también en el texto. Esto puede traer problemas porque es fácil equivocarse u olvidarse de hacer un cambio. Parametrizar un informe nos permite definir ese tipo de parámetros en un solo lugar y obtener diferentes análisis a partir del mismo archivo.

Para generar un informe parametrizado hay que añadir un elemento llamado params a la cabecera con la lista de parámetros y sus valores por defecto.

params:
  especie: Papúa

A partir de ahora, tendrás acceso a una variable llamada params que es una lista que contiene los parámetros y su valor. Para acceder al valor de cada parámetro se utiliza el operador $ de la siguiente manera:

params$especie
[1] "Papúa"

De este modo, el código original puede modificarse para utilizar el valor de la especie almacenada en params$especie.

pinguinos %>% 
  filter(especie == params$especie) %>% 
  ggplot(aes(x = largo_pico_mm, y = alto_pico_mm)) +
  geom_point(color = "darkorange",
             size = 3,
             alpha = 0.8) +
  geom_smooth(method = "lm", se = FALSE, color = "darkorange") +
  theme_minimal() +
  labs(title = "Dimensiones del pingüino",
       subtitle = paste("Longitud y profundidad para los pingüinos", params$especie, "en Palmer Station LTER"),
       x = "Largo del pico (mm)",
       y = "Alto del pico (mm)",
       color = "Especie de Pingüino") 

Aquí cambiamos el subtítulo para concatenar palabras con el valor almacenado en params$especie, de esta manera podemos construir el subtítulo de forma programática.

Ejercicio

Primer desafío: parametrizá el reporte de ejemplo

  1. Agregá la opcion params en el yaml y asignale "Papúa".

  2. Revisá el código y modificalo para que ahora use params$especie en vez de la mención explicita a la especie. En algunos casos necesitaras utilizar la función paste0() para concatenar texto.

  3. Ahora revisá el texto, podés reemplazar la mención de la especie con Papúa entre acentos para que al renderizar aparezca el nombre de la especie.

  4. Renderizá el documento y revisá que todo funcione.

Ahora el informe está listo para funcionar como un informe parametrizado.

Ejercicio

Segundo desafío: parametrizá el reporte de ejemplo

Cambia “Papúa” en el yaml para generar un nuevo informe para una de las otras especies. Renderizá el documento para ver el resultado

También sería posible renderizar el archivo desde la consola, sumando el parámetro deseado, sin tener que modificar encabezado cada vez.

rmarkdown::render("rmarkdown_reporte_ejemplo.Rmd", params = list(
      especie = "Adelia"
))

Mejor aún si necesitas renderizar el mismo reporte con distintos parámetros, es crear una función:

renderiza_reporte <- function(especie) {
  rmarkdown::render(
    "informe/rmarkdown_reporte_ejemplo.Rmd", params = list(
      especie = especie
    ),
    output_file = paste0("reporte-", especie, ".html")
  )
}

Generar una función como esta luego permitirá iterar sobre distintos parámetro usando un loop o el paquete purrr.