---
title: "Report parametrizzato (codice integrato)"
author: "DV"
format: html
editor: visual
params: 
  paese: "Afghanistan"
  continente: "Americas"
---

## Sezione YAML di un report parametrico

Si può impostare un modello di template che poi può essere utilizzato per differenti valori di input sfruttando la sezione `params` dello `YAML`.

Ecco un semplice esempio in cui imposto due "variabili di ambiente":

```{r}
#| echo: true
#| eval: false
params: 
  paese: "Afghanistan"
  continente: "Americas"
```

In particolare, utilizzo di seguito:

-   `paese`, per una rappresentazione grafica,
-   `continente`, per una rappresentazione tabellare.

## Esempio di un report parametrico (codice integrato)

La costruzione di un report segue le stesse regole viste per un report `Quarto`. Questo vale sia i report con codice integrato che con codice esterno utilizzato sfruttando la funzione `read_chunk()`.

Carico i package utilizzati nel seguito del report:

```{r}
#| message: false
library(tidyverse)
library(janitor)
library(gapminder)
```

e preparo la tabella dati:

```{r}
gap_data <- clean_names(gapminder)
```

Le variabili di ambiente definite nello `YAML` sono accessibili nei chunk di codice (sia integrati che su file script esterni) sfruttando l'oggetto `params`:

```{r}
# l'oggetto params è un oggetto di tipo lista
class(params)
# ecco i nomi delle due variabili di ambiente definite nella lista params
names(params)
# stampo a video l'intera lista
params
# oppure i singoli componenti
params$paese
params$continente
```

Costruisco una rappresentazione grafica sfruttando il valore archiviato in `params$paese`:

```{r}
gap_data |>
  filter(country == params$paese) |>
  ggplot() +
  aes(x = year, y = life_exp) +
  geom_line()
```

mentre utilizzo il valore in `params$continent` per stampare le informazioni relative a tre paesi casuali del continente:

```{r}
gap_data |>
  filter(continent == params$continent) |>
  slice_sample(n = 3)
```
