> 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/texlive/pt/competencias/codigo-r-knitr.md).

# Código R (knitr)

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

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

{% code overflow="wrap" %}

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

Pode introduzir comandos R no seu documento \LaTeX{} que serão processados e cuja saída será incluída no documento:

<<>>=
# Criar uma sequência de números
X = 2:10

# Mostrar medidas estatísticas básicas
summary(X)

@
\end{document}
```

{% endcode %}

![KnitrDemo1.png](https://3502988919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVetOkhFZmAC8QCQK0Pi7%2Fuploads%2F4rB1ItV9jgLU4dT6o3Hf%2FKnitrDemo1.png?alt=media\&token=5b2d4df8-8de9-4bdd-be61-0a3992026edf)

[Abra este `knitr` exemplo 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 pode ver, o texto entre os caracteres `<<>>=` e `@` é código R. Este código e a sua saída são impressos num formato semelhante a uma listagem. Este bloco de código pode receber alguns parâmetros adicionais para personalizar a saída dinâmica, como descrito na secção seguinte.

### Blocos de código

Um bloco de código como o apresentado na secção anterior é normalmente chamado de *chunk*. Pode definir algumas opções adicionais nos chunks do knitr. Veja o exemplo abaixo:

{% code overflow="wrap" %}

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

Pode introduzir comandos R no seu documento \LaTeX{} que serão processados e cuja saída será incluída no documento:

<<echo=FALSE, cache=TRUE>>=
# Criar uma sequência de números
X = 2:10

# Mostrar medidas estatísticas básicas
summary(X)

@
\end{document}
```

{% endcode %}

![KnitrDemo2.png](https://3502988919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVetOkhFZmAC8QCQK0Pi7%2Fuploads%2FHtobrK1TjY4SG4ax2BH5%2FScreenshot%202025-12-16%20143420.png?alt=media\&token=50675660-f20f-44d3-be60-fb91b8dbd255)

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

Existem duas opções adicionais passadas dentro de `<<` e `>>`.

* `echo=FALSE`Isto oculta o código e imprime apenas a saída gerada pelo R.
* `cache=TRUE`Se cache estiver definido como true, o chunk não é executado, apenas os objetos por ele gerados. Isto poupa tempo se os dados nesse chunk não tiverem mudado.

  <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p><em>Note que a opção cache=TRUE não é atualmente suportada no Overleaf, mas deverá funcionar localmente.</em></p></div>

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

### Comandos em linha

É possível aceder a objetos gerados num chunk e imprimi-los em linha.

{% code overflow="wrap" %}

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

Pode introduzir comandos R no seu documento \LaTeX{} que serão processados e cuja saída será incluída no documento:

<<echo=FALSE, cache=TRUE>>=
# Criar uma sequência de números
X = 2:10

# Mostrar medidas estatísticas básicas
summary(X)

@

Assim, a média dos dados é $\Sexpr{mean(X)}$
\end{document}
```

{% endcode %}

![KnitrDemo3.png](https://3502988919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVetOkhFZmAC8QCQK0Pi7%2Fuploads%2Fbyz9VKDCCPcoWHbznSJ4%2FScreenshot%202025-12-16%20143647.png?alt=media\&token=9d5ef4de-f413-4bf2-83c8-bf2171f50dee)

[Abra este `knitr` exemplo 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 devolvida pelo código R `mean(X)`. Dentro das chavetas, pode ser passado qualquer comando R.

### Gráficos

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

{% code overflow="wrap" %}

```latex
\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")

@

A figura \ref{fig:plot1} é um histograma simples.

\end{document}
```

{% endcode %}

![KnitrDemo4.png](https://3502988919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVetOkhFZmAC8QCQK0Pi7%2Fuploads%2F5NI4NOJICjnYf8Z2Me1b%2FScreenshot%202025-12-16%20143811.png?alt=media\&token=d937786f-da22-4cbd-9adf-f277ec9f77c4)

[Abra este `knitr` exemplo 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 guardados em "data.txt", gravado no diretório de trabalho atual. Algumas opções relacionadas com a figura são passadas ao chunk.

`plot1`Esta é a etiqueta usada para referenciar o gráfico. O prefixo "fig:" é obrigatório. Pode ver no exemplo que a figura é referenciada com `\ref{fig:plot1}`.`fig.pos="t"` parâmetro de posicionamento. É o mesmo usado no [ambiente de figura](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

Pode importar partes de um script R externo para um documento knitr. Isto é muito útil, uma vez que é bastante comum escrever e depurar o script num programa externo antes de o incluir no seu documento.

Suponha que temos o seguinte código R num ficheiro chamado `mycode.R` que incluímos no nosso documento LaTeX:

```r
## ---- myrcode1
# Criar uma sequência de números
 X = 2:10

## ---- myrcode2
# Mostrar medidas estatísticas básicas
summary(X)
```

Repare nas linhas:

```r
## ---- myrcode1
```

e

```r
## ---- myrcode2
```

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

```r
O chunk abaixo não será impresso

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

O código deve aparecer aqui

<<myrcode2>>=

@
```

![KnitrDemo5.png](https://3502988919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVetOkhFZmAC8QCQK0Pi7%2Fuploads%2FPzKSGsFTMdhs9K8dE8Ny%2FKnitrDemo5.png?alt=media\&token=9c32c381-7621-4b7d-9d73-c1e7a0b6aac8)

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. Assim que o script for importado, pode imprimir um chunk usando a etiqueta que definiu depois de `## ----`. Neste caso é `myrcode2`.

Colocámos todos os fragmentos de código do artigo num projeto que [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:

* `resultados`. Altera o comportamento dos resultados gerados pelo código R. Os valores possíveis são:
  * `markup` Use LaTeX para formatar a saída.
  * `asis` Imprimir os resultados brutos do R.
  * `hold` Manter os resultados de saída e enviá-los para o fim do chunk.
  * `hide` Ocultar resultados.
* `echo`. Indica se o código-fonte R deve ser incluído. Outros parâmetros incluem:
  * `echo=2:3` imprime apenas as segunda e terceira linhas;
  * `echo=-2:-3` exclui apenas as segunda e terceira linhas.
* `cache`. Indica se o chunk de código deve ser armazenado em cache. Os valores possíveis são: `TRUE` e `FALSE`
* `highlight`. Indica se o código-fonte deve ser realçado. Os valores possíveis são: `TRUE` e `FALSE`
* `background`. Cor de fundo do chunk. Podem ser usados formatos rgb e HTML. O valor predefinido é *"#F7F7F7"*.


---

# 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/texlive/pt/competencias/codigo-r-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.
