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

::: {.callout-note title="Nota"}
Puoi scaricare [qui il progetto RStudio in formato compresso](/labs/lab_12-quarto-tutorial/lab_12-quarto-tutorial.zip) con tutto il necessario per compilare sul tuo PC i report `Quarto` (codice `R` integrato, codice `R` esterno, report parametrico con codice `R` integrato, report parametrico con codice `R` esterno).
:::

Questo report si differenzia dallo stesso report parametrico con codice integrato perchè carica i `chunk` di codice da uno script esterno sfruttando la funzione `read_chunk()` del package `knitr`:

```{r}
#| echo: true
knitr::read_chunk("lab_14-report-quarto-parametrico_codice-esterno.R")
```

## 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 package_usati}
#| echo: false
#| warning: false
```

e preparo la tabella dati:

```{r prepara_tabella}
```

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 grafico_paese}
```

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

```{r paesi_casuali_continente}
```
