> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Codice R (knitr)

Overleaf offre un'integrazione con **knitr**, che ti permette di aggiungere codice R al tuo documento LaTeX per generare un output dinamico.

I documenti che contengono codice R devono essere salvati con l'estensione `.Rtex` o `.Rnw`, altrimenti il codice non funzionerà. Vediamo un esempio:

```latex wrap theme={null}
\documentclass{article}
\begin{document}

You can type R commands in your \LaTeX{} document which will be processed and their output included in the document:

<<>>=
# Create a sequence of numbers
X = 2:10

# Display basic statistical measures
summary(X)

@
\end{document}
```

<img src="https://mintcdn.com/ayakaleaf-pro/v5p5w9EX1_dka_GD/images/texlive/knitrdemo1.png?fit=max&auto=format&n=v5p5w9EX1_dka_GD&q=85&s=4cd20c6acbeeab2b1ae2b115efece70d" alt="KnitrDemo1.png" width="2150" height="681" data-path="images/texlive/knitrdemo1.png" />

[Apri questo esempio `knitr` su Overleaf](https://www.overleaf.com/project/new/template/20421?id=69881107\&templateName=Knitr+demo+1\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

Come puoi vedere, il testo compreso tra i caratteri `<<>>=` e `@` è codice R. Questo codice e il suo output vengono stampati in un formato simile a un listato. Questo blocco di codice può accettare alcuni parametri aggiuntivi per personalizzare l'output dinamico, come descritto nella sezione successiva.

### Blocchi di codice

Un blocco di codice come quello presentato nella sezione precedente viene di solito chiamato *chunk*. Nei chunk di knitr puoi impostare alcune opzioni aggiuntive. Guarda l'esempio seguente:

```latex wrap theme={null}
\documentclass{article}
\begin{document}

You can type R commands in your \LaTeX{} document which will be processed and their output included in the document:

<<echo=FALSE, cache=TRUE>>=
# Create a sequence of numbers
X = 2:10

# Display basic statistical measures
summary(X)

@
\end{document}
```

<img src="https://mintcdn.com/ayakaleaf-pro/v5p5w9EX1_dka_GD/images/texlive/screenshot-2025-12-16-143420.png?fit=max&auto=format&n=v5p5w9EX1_dka_GD&q=85&s=9c79c98b1894d1cd22f783c29356de1f" alt="KnitrDemo2.png" width="1910" height="559" data-path="images/texlive/screenshot-2025-12-16-143420.png" />

[Apri questo esempio `knitr` su Overleaf](https://www.overleaf.com/project/new/template/20423?id=69885763\&templateName=Knitr+demo+2\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

All'interno di `<<` e `>>` vengono passate due opzioni aggiuntive.

* `echo=FALSE` nasconde il codice e stampa solo l'output generato da R.
* `cache=TRUE` se cache è impostato a true, il chunk non viene eseguito, vengono usati solo gli oggetti da esso generati. Questo fa risparmiare tempo se i dati di quel chunk non sono cambiati.

  <Info><em>Nota che l'opzione cache=TRUE al momento non è supportata in Overleaf, ma dovrebbe funzionare in locale.</em></Info>

Consulta la [guida di riferimento](https://learn.overleaf.com/learn/Knitr#Reference_guide) per altre opzioni.

### Comandi inline

È possibile accedere agli oggetti generati in un chunk e stamparli all'interno del testo.

```latex wrap theme={null}
\documentclass{article}
\begin{document}

You can type R commands in your \LaTeX{} document which will be processed and their output included in the document:

<<echo=FALSE, cache=TRUE>>=
# Create a sequence of numbers
X = 2:10

# Display basic statistical measures
summary(X)

@

So, the mean of the data is $\Sexpr{mean(X)}$
\end{document}
```

<img src="https://mintcdn.com/ayakaleaf-pro/v5p5w9EX1_dka_GD/images/texlive/screenshot-2025-12-16-143647.png?fit=max&auto=format&n=v5p5w9EX1_dka_GD&q=85&s=8b59926a477373b2787f884267d7c263" alt="KnitrDemo3.png" width="1910" height="630" data-path="images/texlive/screenshot-2025-12-16-143647.png" />

[Apri questo esempio `knitr` su Overleaf](https://www.overleaf.com/project/new/template/20425?id=69886866\&templateName=Knitr+demo+3\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

Il comando `\Sexpr{mean(X)}` stampa l'output restituito dal codice R `mean(X)`. All'interno delle parentesi graffe si può passare qualsiasi comando R.

### Grafici

Anche i grafici possono essere aggiunti a un documento knitr, come in questo esempio:

```latex wrap theme={null}
\documentclass{article}
\begin{document}

<<plot1, fig.pos="t", fig.height=4, fig.width=4, fig.cap="First plot">>=

xdata = read.csv(file="data.txt", head=TRUE,sep=" ")

hist(xdata$data, main="Overleaf histogram", xlab="Data")

@

The figure \ref{fig:plot1} is simple histogram.

\end{document}
```

<img src="https://mintcdn.com/ayakaleaf-pro/GmaXa-Cu4QQRFT4C/images/texlive/screenshot-2025-12-16-143811.png?fit=max&auto=format&n=GmaXa-Cu4QQRFT4C&q=85&s=af1985b1e5b5ce56b777c5d9e3066420" alt="KnitrDemo4.png" width="1915" height="756" data-path="images/texlive/screenshot-2025-12-16-143811.png" />

[Apri questo esempio `knitr` su Overleaf](https://www.overleaf.com/project/new/template/20427?id=69890965\&templateName=Knitr+demo+3\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

Questo istogramma usa i dati memorizzati in "data.txt", salvato nella directory di lavoro corrente. Al chunk vengono passate alcune opzioni relative alla figura.

`plot1` è l'etichetta usata per fare riferimento al grafico. Il prefisso "fig:" è obbligatorio. Nell'esempio puoi vedere che si fa riferimento alla figura con `\ref{fig:plot1}`. `fig.pos="t"` è il parametro di posizionamento, lo stesso usato nell'[ambiente figure](https://learn.overleaf.com/learn/Positioning_images_and_tables#The_figure_environment). `fig.height=4, fig.width=4` sono la larghezza e l'altezza della figura. `fig.cap="First plot"` è la didascalia della figura.

### Script R esterni

Puoi importare parti di uno script R esterno in un documento knitr. Questo è molto utile, poiché è abbastanza comune scrivere ed eseguire il debug dello script in un programma esterno prima di includerlo nel documento.

Supponiamo di avere il seguente codice R in un file chiamato `mycode.R`, che includiamo nel nostro documento LaTeX:

```r theme={null}
## ---- myrcode1
# Create a sequence of numbers
 X = 2:10

## ---- myrcode2
# Display basic statistical measures
summary(X)
```

Nota le righe:

```r theme={null}
## ---- myrcode1
```

e

```r theme={null}
## ---- myrcode2
```

Queste righe indicano l'inizio di un chunk di codice e sono obbligatorie se vuoi usare questo script nel documento, come mostrato nel seguente frammento di codice:

```r theme={null}
The chunk below will not be printed

<<echo=FALSE, cache=FALSE>>=
read_chunk("mycode.R")
@

The code must show up here

<<myrcode2>>=

@
```

<img src="https://mintcdn.com/ayakaleaf-pro/v5p5w9EX1_dka_GD/images/texlive/knitrdemo5.png?fit=max&auto=format&n=v5p5w9EX1_dka_GD&q=85&s=0f1fd4088c9359058547a7c58f121bd5" alt="KnitrDemo5.png" width="1544" height="436" data-path="images/texlive/knitrdemo5.png" />

Il primo chunk non viene stampato e serve solo a importare lo script con il comando `read_chunk("mycode.R")`. Per questo è impostata l'opzione `echo=FALSE`. Inoltre, gli script non devono essere memorizzati nella cache. Una volta importato lo script, puoi stampare un chunk usando l'etichetta impostata dopo `## ----`. In questo caso è `myrcode2`.

Abbiamo raccolto tutti i frammenti di codice dell'articolo in un progetto che [puoi aprire su Overleaf](https://www.overleaf.com/project/new/template/20429?id=69894649\&templateName=Knitr+full+demo\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=).

### Guida di riferimento

Alcune opzioni dei chunk:

* `results`. Modifica il comportamento dei risultati generati dal codice R. I valori possibili sono:
  * `markup` usa LaTeX per formattare l'output.
  * `asis` stampa i risultati grezzi di R.
  * `hold` trattiene i risultati dell'output e li sposta alla fine del chunk.
  * `hide` nasconde i risultati.
* `echo`. Indica se includere il codice sorgente R. Altri parametri includono:
  * `echo=2:3` stampa solo la seconda e la terza riga;
  * `echo=-2:-3` esclude solo la seconda e la terza riga.
* `cache`. Indica se memorizzare nella cache il chunk di codice. I valori possibili sono: `TRUE` e `FALSE`
* `highlight`. Indica se evidenziare la sintassi del codice sorgente. I valori possibili sono: `TRUE` e `FALSE`
* `background`. Colore di sfondo del chunk. Si possono usare i formati rgb e HTML. Il valore predefinito è *"#F7F7F7"*.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.