-
Notifications
You must be signed in to change notification settings - Fork 1
/
06_parametrizacion.qmd
97 lines (73 loc) · 3.62 KB
/
06_parametrizacion.qmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
---
title: "Reportes Parametrizados"
toc: true
format:
html:
code-tools: true
self-contained: true
execute:
message: false
warning: false
---
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.
``` yaml
params:
especie: Papúa
```
```{r, include=FALSE}
params <- list(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:
```{r}
params$especie
```
De este modo, el código original puede modificarse para utilizar el valor de la especie almacenada en `params$especie`.
```{r eval=FALSE}
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.
::: callout-tip
## 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 `r params$especie` 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.
::: callout-tip
## 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.
``` r
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:
``` r
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.**