#' è il marker per i commenti Roxygen, il linguaggio usato per creare la documentazione di pacchetti e funzioni.Indice
Dagli script ai report e viceversa
E' possibile creare un report dinamico direttamente a partire dallo script R. Questo può essere comodo per avere sia un report che uno script pienamente eseguibile con source(), cioè tutto assieme.
Per trasformare lo script in un file RMarkdown o Quarto (o altri formati), possiamo usare la funzione knitr::spin().
Se, al contrario, vogliamo ottenere uno script R da un file RMarkdown, possiamo usare knitr::purl() (purl significa infatti 'rovescio', nel linguaggio della maglia – knitting)
Dallo script al report
Da uno script R è possibile compilare direttamente un report, da menu (l'icona del block notes) o da riga di comando.
Diciamo che lo script sia il seguente:
# questo è un commento summary(cars) #' questo è un **testo** vero e proprio. plot(cars)
Il report conterrà il codice, il risultato, i commenti e (volendo) testo in markdown, preceduto da #' 1).
Da linea di comando:
rmarkdown::render("script.R")
rmarkdown::render("script.R", "pdf_document")
Dallo script a RMarkdown
Per trasformare lo script in un report, rmarkdown usa la funzione spin(), che può essere usata direttamente per creare un documento in diversi formati, fra cui: “Rmd” (RMarkdown) e “qmd” (Quarto)
- i testi preceduti da
#' vengono conservati come testi normali (possono essere scritti in markdown); - le opzioni per i blocchi di testo sono commenti indicati da
#+or#-(#+ label, opt1=value1, opt2=value2)
A partire dallo script:
# questo è un commento summary(cars) #' questo è un testo vero e proprio #+ echo=FALSE # questo è un blocco con opzione plot(cars)
Con knitr::spin('script.R') otterremo un file Markdown (un report in markdown, ovvero l'output di default per Rmd). Ma indicando knit = FALSE, il risultato sarà il file intermedio:
knitr::spin('script.R', knit = FALSE)
otteremo il seguente file Rmd:
```{r}
# questo è un commento
summary(cars)
```
questo è un testo vero e proprio
```{r echo=FALSE}
# questo è un blocco con opzione
plot(cars)
```
Per avere un file Quarto, scriveremo:
knitr::spin('script.R', format = 'qmd', knit = FALSE)
Da RMarkdown allo script
Sintassi simile ha la funzione knitr::purl. Eseguendo:
knitr::purl('file.Rmd')
Otterremo il seguente script (con tutti i commenti e la documentazione):
## ----------------------------------------------------------------- # questo è un commento summary(cars) ## ----echo=FALSE--------------------------------------------------- # questo è un blocco con opzione plot(cars)
Possiamo controllare quanti commenti e opzioni dei blocchi mantenere nello script, con l'argomento documentation:
0= solo il codice;1(default) = aggiunge le opzioni dei blocchi di codice, rendendole sezioni dello script (vedi sezioni_di_codice)2= aggiunge tutti i blocchi di testo come roxygen comments.
Confronto
| Funzione | Direzione | Input | Output | Scopo |
|---|---|---|---|---|
knitr::spin() | Script → Report | File .R | File .Rmd` o `.qmd | Generare un report dinamico |
knitr::purl() | Report → Script | File .Rmd o .qmd | File .R | Estrarre lo script dal report |
Curiosità: i nomi delle funzioni richiamano la terminologia del lavoro a maglia (“knit”, “spin”, “purl”), per rafforzare il parallelismo tra codice e tessitura narrativa.
Quando usarle?
- Spin: Per presentare codice e risultati con contesto descrittivo, pronto per la pubblicazione, senza fare copia e incolla dallo script.
- Purl: Per avere un file
.Rpulito per eseguire o condividere il codice analitico.
