Ricerca Sociale con R

Una wiki per l'analisi dei dati con R

Strumenti Utente

Strumenti Sito


r:scrittura_accademica:rmarkdown-basi

RMarkdown: le basi

Integrato nativamente in RStudio, e basato sulla sintassi Markdown, RMarkdown serve a creare report riproducibili a partire dagli script di R, producendo documenti in vari formati che combinano testo formattato, codice e risultati.

Un primo documento di prova

Il modo più semplice per capire come funziona è creare ed esportare il primo documento.

1. Creazione del file

R Markdown

In RStudio, il menu per creare un nuovo file è (ovviamente) File > New File > RMarkdown, che apre una finestra di dialogo che chiederà di scegliere, fra le altre cose, il formato del documento (ad esempio, HTML, PDF, Word, ecc.).

Il documento appena creato (scegliendo il formato HTML) si presenterà come segue:

---  
title: "Documento RMarkdown"  
author: "Nome Cognome"  
date: "Oggi"  
output: html_document  
--- 

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

## R Markdown

This is an R Markdown document. Markdown is a simple formatting syntax for 
authoring HTML, PDF, and MS Word documents. For more details on using R 
Markdown see <http://rmarkdown.rstudio.com>.

When you click the **Knit** button a document will be generated that 
includes both content as well as the output of any embedded R code chunks 
within the document. You can embed an R code chunk like this:

```{r cars}
summary(cars)
```

## Including Plots

You can also embed plots, for example:

```{r pressure, echo=FALSE}
plot(pressure)
```

Note that the `echo = FALSE` parameter was added to the code chunk 
to prevent printing of the R code that generated the plot.

Il testo di prova già inserito nel testo fornisce le istruzioni (in inglese) per iniziare a usare questi documenti, e mostra alcuni esempi di formattazione e di blocchi eseguibili.

Per la formattazione del testo, vedi Guida alla sintassi Markdown.

2. Modifica del testo e salvataggio

Il cuore del documento è ovviamente rappresentato dal codice, che va inserito in un blocco di codice, come quello che segue.

```{r}  
# questo è un commento in un blocco di codice   
print("Ciao!")
```  

In RStudio, questi blocchi di codice possono essere eseguiti direttamente nel documento, cliccando sulla freccia verde in alto a sinistra rispetto al blocco (run, simile a play). Questo consente di analizzare / visualizzare i dati e commentarli contemporaneamente.

Proviamo a scrivere qualcosa, ad esempio:

Questo è un testo normale, che uso per commentare 
il blocco di codice eseguibile R, che è quello che segue.
 
```{r}  
# questo è un commento in un blocco di codice   
print("Ciao!")
```  

Anche se sembra banale … Salvare il file appena creato, altrimenti il file di output non verrà generato.

Dopo il primo salvataggio, il file verrà salvato sempre, prima del rendering.

3. Rendering

Il processo che trasforma un file .Rmd in un documento formattato (HTML, PDF, Word, ecc.) si chiama rendering.

Cliccando su “Knit” (indicato con l'icona del gomitolo, o di un block notes per i notebook) si genererà il documento di output1).

Nella figura che segue, il rendering è quello predefinito per i notebook, ovvero l’anteprima in HTML.

Rendering del documento
Fig. 1: Rendering del documento o del notebook

Il tipo e il formato del documento dipenderà naturalmente dalla scelta fatta al momento della creazione del file: il rendering da menu (pulsante) avverrà automaticamente per quel formato.

È possibile però cambiarlo o aggiungerne un altro (dal menu a tendina, o a mano), e quindi produrre da uno stesso file più tipi di documenti.

---  
title: "Documento RMarkdown"  
author: "Il tuo nome"  
date: "Oggi"  
output:
  word_document: default
  html_notebook: default
---  

I formati accettati sono svariati (anche se non tutti sono inclusi esplicitamente nel menu): oltre a “word_document”, “pdf_document”, “html_document”, possiamo indicare “odt_document”, “powerpoint_presentation”, e altri ancora (vedi I formati di RMarkdown).

Il rendering può essere eseguito anche da riga di comando, o script:

rmarkdown::render(file, output_format = "word_document")

Il frontmatter

La parte iniziale del file .Rmd, delimitata da ---, si chiama front matter (o frontmatter):

---  
title: "Documento RMarkdown"  
author: "Il tuo nome"  
date: "Oggi"  
output:
  word_document: default
  html_notebook: default
---   

Il front matter è un elemento di fondamentale importanza in tutti i file markdown, in quanto contiene i metadati, quali il titolo del documento, l’autore, la data e soprattutto, come abbiamo visto sopra, il tipo di output desiderato, ed eventualmente altre istruzioni necessarie alla corretta generazione del documento (ad esempio, quelle per i riferimenti bibliografici).

Alcune di queste informazioni, a seconda del formato di output scelto, verranno inserite direttamente nel documento: ad esempio, il titolo indicato nel front matter sarà il titolo principale del documento finale generato.

Vedi anche: Pandoc: guida introduttiva

I blocchi di codice eseguibili

I blocchi di codice eseguibili (code chunks) sono la componente fondamentale di un documento RMarkdown, in quanto permettono di inserire ed eseguire codice R (o anche altri linguaggi, ma R è quello predefinito).

Essi sono delimitati da:

  • Tre backtick ``` seguiti dall'estensione del linguaggio fra parentesi graffe {r};
  • e tre backtick alla fine: ```
```{r}
# commento
codice
```

Fortunatamente, per inserirli senza doverli scrivere, in RStudio esistono

  • una scorciatoia, Ctrl-Alt-I; e
  • un pulsante, evidenziato nell’immagine che segue.
Il menu per inserire i blocchi di codice
Fig. 2: Il menu per inserire i blocchi di codice

Quando il documento RMarkdown viene compilato, il codice all’interno di questi blocchi viene eseguito e i risultati (come tabelle, grafici, output testuali) vengono inseriti nel documento finale, insieme al testo normale scritto al di fuori dei blocchi.

Vedi anche: Sintassi di Markdown: i blocchi di codice

Opzioni dei blocchi

I blocchi possono essere personalizzati con opzioni che controllano cosa viene mostrato nel documento finale.

Opzioni Esempi di uso
echo = TRUE mostra il codice nel documento
eval = FALSE non esegue il codice esempi di funzioni; codice che viene illustrato
include = FALSE esegue il codice ma non mostra né codice né risultati impostazioni di R, dei grafici, e dei pacchetti collegati a RMarkdown
message = FALSE, warning = FALSE nasconde messaggi e avvisi utile nei report, per avere output più ordinati

Tab. 1: Opzioni dei blocchi di codice (1)

Queste opzioni si scrivono nella testata del blocco2), ad esempio:

```{r pressure, echo=FALSE}
# non mostra il codice, mostra solo l'output
plot(pressure)
```

RStudio semplifica la gestione dei blocchi con un menu a tendina che appare cliccando sulla rotellina⚙️in alto a destra di ogni chunk.

Le opzioni dei blocchi di codice
Fig. 3: Il menu con le opzioni per i blocchi di codice

Le impostazioni per l'intero documento sono incluse nel file di esempio creato automaticamente:

```{r setup, include=FALSE}
# in tutto il documento, verranno mostrati codice e output
# i blocchi potranno comunque essere impostati ad hoc
knitr::opts_chunk$set(echo = TRUE)
```

Dati per gli esempi successivi

library(LabRS)
data(MYSLID)
tab1 <- table(MYSLID$Lingua)
tab3 <- table(MYSLID$Lingua, MYSLID$Genere)

Le tabelle

All'interno di un report di ricerca, le tabelle sono un elemento fondamentale. Markdown permette di costruire tabelle che hanno qualche limitazione (per la formattazione base, vai a Markdown: le tabelle).

Per ovviare a tali limitazioni, esistono pacchetti specializzati, che in ogni caso richiedono di conoscere la sintassi di base e il modo in cui rmarkdown tratta (passando da knitr e *Pandoc*) le tabelle, le didascalie, la numerazione delle tabelle e i riferimenti incrociati.

Tabelle dagli output di R

Questa che segue è una tabella normale, così come la vediamo nella console di R, e incollata in un file di testo.

        
           Donna Uomo
  Inglese   2999 2717
  Francese   262  235
  Altro      564  527

Utilizzando la funzione kable() del pacchetto knitr (comunque usato per il rendering dei documenti RMarkdown:

```{r}
kable(tab3, caption = "didascalia")
```

la tabella verrà prima trasformata in markdown (in background, a meno che non eseguiate il comando in uno script o in console):

 

|          | Donna | Uomo |
|----------|------:|-----:|
| Inglese  |  2999 | 2717 |
| Francese |   262 |  235 |
| Altro    |   564 |  527 |

: didascalia

e poi trasformata (con Pandoc, e sempre in background) in una tabella compatibile con il formato scelto.

I grafici

Per la formattazione dei grafici nel file di Word, possono essere utili le seguenti opzioni dei blocchi di codice:

Opzioni
fig.cap = "..." Didascalia
dpi Risoluzione del grafico
out.width Spazio della pagina occupato dal grafico
fig.width Dimensioni del grafico
fig.height

Tab. 2: Opzioni dei blocchi di codice (2)

Ad esempio:

```{r fig.cap="Esempio di grafico a barre"}
barplot(
  tab1, 
  main = "Lingue"
```

Per visualizzare solo il grafico senza il codice:

```{r echo=FALSE, fig.cap="Esempio di grafico a barre"}
barplot(
  tab1, 
  main = "Lingue"
```

Un file di esempio

Questo file si può scaricare, ed usare per generare un file html (notebook) o un file Word.

primo_documento.Rmd
---
title: "Primo documento RMarkdown"
author: "Nome Cognome"
date: "`r Sys.Date()`"
output:
  word_document: default
  html_notebook: default
---
 
I blocchi possono avere un nome.
 
```{r pacchetti}
library(LabRS)
library(knitr)
```
 
```{r dati}
data(MYSLID)
tab1 <- table(MYSLID$Lingua)
tab3 <- table(MYSLID$Lingua, MYSLID$Genere)
```
 
Questa è una tabella con didascalia
 
```{r}
kable(tab3, caption = "didascalia")
```
 
Questo è un grafico con didascalia, ma nel documento non si vedrà il codice
 
```{r echo=FALSE, fig.cap="Esempio di grafico a barre"}
barplot(
  tab1, 
  main = "Lingue"
)
```


1)
Nel caso dei notebook, viene “restituito” di default solo l’output del codice eseguito esplicitamente.
2)
La sintassi di RMarkdown e Quarto è qui diversa, ma Quarto interpreta correttamente i blocchi di Rmd

Domande? Scrivimi

Messenger Telegram Email
r/scrittura_accademica/rmarkdown-basi.txt · Ultima modifica: 14/11/2025 10:33 da Agnese Vardanega