> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/it/altri-argomenti/29-knitr.md).

# Knitr

Come riportato su Wikipedia, [Knitr è un motore per la generazione dinamica di report con R](https://en.wikipedia.org/wiki/Knitr), un linguaggio di programmazione orientato alla statistica. Questo articolo spiega come aggiungere codice R al tuo documento LaTeX per generare un output dinamico.

In una distribuzione standard di LaTeX devi avere R configurato nel tuo sistema operativo ed eseguire alcuni comandi speciali per compilarlo. Overleaf può evitarti questa seccatura, **knitr** funziona subito, senza configurazioni aggiuntive.

## Introduzione

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

```latex
\documentclass{article}
\begin{document}

Puoi digitare comandi R nel tuo \LaTeX{} documento che verranno elaborati e il cui output sarà incluso nel documento:

<<>>=
# Crea una sequenza di numeri
X = 2:10

# Mostra misure statistiche di base
summary(X)

@
\end{document}
```

![KnitrDemo1.png](/files/e901f2dfff57fda9c9485040341248fdbea3d665)

&#x20;[Apri questo `knitr` esempio 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 vedi, il testo tra i caratteri `<<>>=` e `@` è codice R; questo codice e il suo output vengono stampati in un formato simile a un elenco. Questo blocco di codice può accettare alcuni parametri aggiuntivi per personalizzare l'output dinamico. Vedi la sezione successiva.

## Blocchi di codice

Un blocco di codice come quello presentato nella sezione precedente è solitamente chiamato un *chunk*. Puoi impostare alcune opzioni aggiuntive nei chunk di knitr. Vedi l'esempio qui sotto:

```latex
\documentclass{article}
\begin{document}

Puoi digitare comandi R nel tuo \LaTeX{} documento che verranno elaborati e il cui output sarà incluso nel documento:

<<echo=FALSE, cache=TRUE>>=
# Crea una sequenza di numeri
X = 2:10

# Mostra misure statistiche di base
summary(X)

@
\end{document}
```

![KnitrDemo2.png](/files/0768b3f4eb2d12a03e355d2a4ead6ecc00bb7249)

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

Ci sono tre opzioni aggiuntive passate all'interno di `<<` e `>>`.

**echo=FALSE**

Questo nasconde il codice e stampa solo l'output generato da R.

**cache=TRUE**

Se cache è impostato su true, il chunk non viene eseguito, vengono usati solo gli oggetti da esso generati. Questo fa risparmiare tempo se i dati in quel chunk non sono cambiati. Nota che l'opzione cache=TRUE al momento non è supportata in Overleaf, ma dovrebbe funzionare in locale.

Vedi la [guida di riferimento](#reference-guide) per altre opzioni.

## Comandi inline

È possibile accedere agli oggetti generati in un chunk e stamparli inline.

```latex
\documentclass{article}
\begin{document}

Puoi digitare comandi R nel tuo \LaTeX{} documento che verranno elaborati e il cui output sarà incluso nel documento:

<<echo=FALSE, cache=TRUE>>=
# Crea una sequenza di numeri
X = 2:10

# Mostra misure statistiche di base
summary(X)

@

Quindi, la media dei dati è $\Sexpr{mean(X)}$
\end{document}
```

![KnitrDemo3.png](/files/0df86cf9ed2d5be80bdb251494aa2b09e7be491c)

&#x20;[Apri questo `knitr` esempio 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ò inserire qualsiasi comando R.

## Grafici

I grafici possono anche essere aggiunti a un **knitr** documento. Vedi l'esempio successivo

```latex
\documentclass{article}
\begin{document}

<<plot1, fig.pos="t", fig.height=4, fig.width=4, fig.cap="Primo grafico">>=

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

hist(xdata$data, main="Istogramma di Overleaf", xlab="Dati")

@

La figura \ref{fig:plot1} è un semplice istogramma.

\end{document}
```

![KnitrDemo4.png](/files/d19aed294d78ce05408297368b0ed233d4055efc)

&#x20;[Apri questo `knitr` esempio 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. Alcune opzioni relative alla figura vengono passate al chunk.

**plot1**

Questa è l'etichetta usata per riferirsi al grafico. Il prefisso "fig:" è obbligatorio. Nell'esempio puoi vedere che la figura viene richiamata con \ref{fig:plot1}.

**fig.pos="t"**

Parametro di posizionamento. È lo stesso usato nell'ambiente figure.

**fig.height=4, fig.width=4**

Larghezza e altezza della figura.

**fig.cap="Primo grafico"**

Didascalia della figura.

## Script R esterni

Puoi importare parti di uno script R esterno in un **knitr** documento. Questo è molto utile poiché è abbastanza comune scrivere e fare 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:

```latex
## ---- myrcode1
# Crea una sequenza di numeri
 X = 2:10

## ---- myrcode2
# Mostra misure statistiche di base
summary(X)
```

Nota le righe

```latex
## ---- myrcode1
```

e

```latex
## ---- myrcode2
```

Queste segnano l'inizio di un blocco di codice e sono obbligatorie se vuoi usare questo script nel nostro documento, come mostrato nel seguente frammento di codice:

```latex
Il chunk seguente non verrà stampato

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

Il codice deve comparire qui

<<myrcode2>>=

@
```

![KnitrDemo5.png](/files/84aebeed1195dfb14c7bd7758c250521898c0e7d)

Il primo chunk non viene stampato, serve solo a importare lo script con il comando `read_chunk("mycode.R")`, per questo l'opzione `echo=FALSE` è impostata. Inoltre, gli script non devono essere memorizzati nella cache. Una volta importato lo script, puoi stampare un chunk usando l'etichetta che hai impostato 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**

* `risultati`. 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` Mantiene i risultati dell'output e li invia alla fine del chunk.
  * `hide` Nasconde i risultati.
* `echo`. Se includere il codice sorgente R. Può accettare altri parametri, `echo=2:3` stampa solo la seconda e la terza riga; `echo=-2:-3` esclude solo la seconda e la terza riga.
* `cache`. Se memorizzare nella cache il blocco di codice. I valori possibili sono `TRUE` e `FALSE`
* `highlight`. Se evidenziare il 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"*.

## Approfondimenti

Per maggiori informazioni vedi

* [Evidenziazione del codice con minted](/latex/it/formattazione/12-code-highlighting-with-minted.md)
* [Uso dei colori in LaTeX](/latex/it/formattazione/13-using-colors-in-latex.md)
* [grafici in LaTeX](/latex/it/specifico-per-argomento/08-pgfplots-package.md)
* [Inserimento di immagini](/latex/it/altri-argomenti/27-inserting-images.md)
* [Tabelle](/latex/it/figure-e-tabelle/01-tables.md)
* [Posizionamento di immagini e tabelle](/latex/it/figure-e-tabelle/02-positioning-images-and-tables.md)
* [Pacchetto TikZ](/latex/it/figure-e-tabelle/05-tikz-package.md)
* [Espressioni matematiche](/latex/it/matematica/01-mathematical-expressions.md)
* [le **knitr** pagina web](http://yihui.name/knitr/)
* [le **knitr** manuale del pacchetto](https://bitbucket.org/stat/knitr/downloads/knitr-manual.pdf)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/it/altri-argomenti/29-knitr.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
