> ## 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.

# Código R (knitr)

O Overleaf oferece integração com o **knitr**, que permite adicionar código R ao seu documento LaTeX para gerar uma saída dinâmica.

Documentos que contêm código R devem ser salvos com a extensão `.Rtex` ou `.Rnw`; caso contrário, o código não funcionará. Vejamos um exemplo:

```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" />

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

Como você pode ver, o texto entre os caracteres `<<>>=` e `@` é código R. Esse código e sua saída são impressos em um formato semelhante a uma listagem. Esse trecho de código pode receber alguns parâmetros extras para personalizar a saída dinâmica, conforme descrito na próxima seção.

### Chunks de código

Um bloco de código como o apresentado na seção anterior costuma ser chamado de *chunk*. Você pode definir algumas opções extras nos chunks do knitr. Veja o exemplo abaixo:

```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" />

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

Há duas opções adicionais passadas entre `<<` e `>>`.

* `echo=FALSE`Oculta o código e imprime apenas a saída gerada pelo R.
* `cache=TRUE`Se o cache estiver definido como true, o chunk não é executado; apenas os objetos gerados por ele são usados. Isso economiza tempo se os dados desse chunk não tiverem mudado.

  <Info><em>Observe que a opção cache=TRUE não é suportada atualmente no Overleaf, mas deve funcionar localmente.</em></Info>

Consulte o [guia de referência](https://learn.overleaf.com/learn/Knitr#Reference_guide) para mais opções.

### Comandos inline

É possível acessar objetos gerados em um chunk e imprimi-los inline.

```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" />

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

O comando `\Sexpr{mean(X)}` imprime a saída retornada pelo código R `mean(X)`. Qualquer comando R pode ser passado entre as chaves.

### Gráficos

Gráficos também podem ser adicionados a um documento knitr, como neste exemplo:

```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" />

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

Este histograma usa dados armazenados em "data.txt", salvo no diretório de trabalho atual. Algumas opções relacionadas à figura são passadas ao chunk.

`plot1`Este é o rótulo usado para referenciar o gráfico. O prefixo "fig:" é obrigatório. Você pode ver no exemplo que a figura é referenciada com `\ref{fig:plot1}`.`fig.pos="t"` parâmetro de posicionamento. É o mesmo usado no [ambiente figure](https://learn.overleaf.com/learn/Positioning_images_and_tables#The_figure_environment).`fig.height=4, fig.width=4`Largura e altura da figura.`fig.cap="First plot"`Legenda da figura.

### Scripts R externos

Você pode importar partes de um script R externo para um documento knitr. Isso é muito útil, pois é bastante comum escrever e depurar o script em um programa externo antes de incluí-lo no documento.

Suponha que temos o seguinte código R em um arquivo chamado `mycode.R`, que incluímos em nosso documento LaTeX:

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

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

Observe as linhas:

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

e

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

Elas marcam o início de um chunk de código e são obrigatórias se você quiser usar este script no documento, como mostrado no seguinte fragmento de código:

```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" />

O primeiro chunk não é impresso e é usado apenas para importar o script com o comando `read_chunk("mycode.R")`. É por isso que a opção `echo=FALSE` está definida. Além disso, os scripts não devem ser armazenados em cache. Depois que o script for importado, você pode imprimir um chunk usando o rótulo definido após `## ----`. Neste caso, é `myrcode2`.

Reunimos todos os fragmentos de código deste artigo em um projeto que [você pode abrir no Overleaf](https://www.overleaf.com/project/new/template/20429?id=69894649\&templateName=Knitr+full+demo\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=).

### Guia de referência

Algumas opções de chunk:

* `results`. Altera o comportamento dos resultados gerados pelo código R. Os valores possíveis são:
  * `markup` Usa LaTeX para formatar a saída.
  * `asis` Imprime os resultados brutos do R.
  * `hold` Retém os resultados da saída e os envia para o final do chunk.
  * `hide` Oculta os resultados.
* `echo`. Define se o código-fonte R deve ser incluído. Outros parâmetros incluem:
  * `echo=2:3` imprime apenas a segunda e a terceira linhas;
  * `echo=-2:-3` exclui apenas a segunda e a terceira linhas.
* `cache`. Define se o chunk de código deve ser armazenado em cache. Os valores possíveis são: `TRUE` e `FALSE`
* `highlight`. Define se o código-fonte deve ser destacado. Os valores possíveis são: `TRUE` e `FALSE`
* `background`. Cor de fundo do chunk. Podem ser usados os formatos rgb e HTML. O valor padrão é *"#F7F7F7"*.


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