Report parametrizzato (codice esterno)

Author

DV

NoteNota

Puoi scaricare qui il progetto RStudio in formato compresso 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:

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”:

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:

e preparo la tabella dati:

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:

# l'oggetto params è un oggetto di tipo lista
class(params)
[1] "list"
# ecco i nomi delle due variabili di ambiente definite nella lista params
names(params)
[1] "paese"      "continente"
# stampo a video l'intera lista
params
$paese
[1] "Afghanistan"

$continente
[1] "Americas"
# oppure i singoli componenti
params$paese
[1] "Afghanistan"
params$continente
[1] "Americas"

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

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:

gap_data |>
  filter(continent == params$continent) |>
  slice_sample(n = 3)
# A tibble: 3 × 6
  country             continent  year life_exp     pop gdp_percap
  <fct>               <fct>     <int>    <dbl>   <int>      <dbl>
1 Trinidad and Tobago Americas   1967     65.4  960155      5621.
2 Bolivia             Americas   1992     60.0 6893451      2962.
3 Haiti               Americas   1952     37.6 3201488      1840.