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

Overleaf ofrece una integración con **knitr**, que te permite añadir código R a tu documento LaTeX para generar una salida dinámica.

Los documentos que contienen código R deben guardarse con la extensión `.Rtex` o `.Rnw`; de lo contrario, el código no funcionará. Veamos un ejemplo:

```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 ejemplo de `knitr` en Overleaf](https://www.overleaf.com/project/new/template/20421?id=69881107\&templateName=Knitr+demo+1\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

Como puedes ver, el texto entre los caracteres `<<>>=` y `@` es código R. Este código y su salida se muestran en un formato similar a un listado. Este fragmento de código admite algunos parámetros adicionales para personalizar la salida dinámica, como se describe en la siguiente sección.

### Fragmentos de código

Un bloque de código como el presentado en la sección anterior suele llamarse *chunk* (fragmento). Puedes establecer algunas opciones adicionales en los chunks de knitr. Observa el siguiente ejemplo:

```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 ejemplo de `knitr` en Overleaf](https://www.overleaf.com/project/new/template/20423?id=69885763\&templateName=Knitr+demo+2\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

Se pasan dos opciones adicionales dentro de `<<` y `>>`.

* `echo=FALSE` Oculta el código y solo muestra la salida generada por R.
* `cache=TRUE` Si cache se establece en true, el chunk no se ejecuta; solo se usan los objetos generados por él. Esto ahorra tiempo si los datos de ese chunk no han cambiado.

  <Info><em>Ten en cuenta que la opción cache=TRUE no es compatible actualmente con Overleaf, pero debería funcionar en local.</em></Info>

Consulta la [guía de referencia](https://learn.overleaf.com/learn/Knitr#Reference_guide) para ver más opciones.

### Comandos en línea

Es posible acceder a los objetos generados en un chunk y mostrarlos en línea.

```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 ejemplo de `knitr` en Overleaf](https://www.overleaf.com/project/new/template/20425?id=69886866\&templateName=Knitr+demo+3\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

El comando `\Sexpr{mean(X)}` muestra la salida devuelta por el código R `mean(X)`. Dentro de las llaves se puede pasar cualquier comando de R.

### Gráficos

También se pueden añadir gráficos a un documento knitr, como en este ejemplo:

```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 ejemplo de `knitr` en 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 los datos almacenados en "data.txt", guardado en el directorio de trabajo actual. Se pasan al chunk algunas opciones relacionadas con la figura.

`plot1` Es la etiqueta que se usa para referenciar el gráfico. El prefijo "fig:" es obligatorio. En el ejemplo puedes ver que la figura se referencia con `\ref{fig:plot1}`. `fig.pos="t"` Parámetro de posicionamiento. Es el mismo que se usa en [el entorno figure](https://learn.overleaf.com/learn/Positioning_images_and_tables#The_figure_environment). `fig.height=4, fig.width=4` Anchura y altura de la figura. `fig.cap="First plot"` Título (caption) de la figura.

### Scripts de R externos

Puedes importar partes de un script de R externo en un documento knitr. Esto es muy útil, ya que es bastante habitual escribir y depurar el script en un programa externo antes de incluirlo en tu documento.

Supongamos que tenemos el siguiente código R en un archivo llamado `mycode.R`, que incluimos en nuestro documento LaTeX:

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

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

Fíjate en las líneas:

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

y

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

Estas marcan el inicio de un chunk de código y son obligatorias si quieres usar este script en tu documento, como se muestra en el siguiente 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" />

El primer chunk no se muestra y solo se usa para importar el script con el comando `read_chunk("mycode.R")`. Por eso se establece la opción `echo=FALSE`. Además, los scripts no deben almacenarse en caché. Una vez importado el script, puedes mostrar un chunk usando la etiqueta que hayas establecido después de `## ----`. En este caso es `myrcode2`.

Hemos reunido todos los fragmentos de código del artículo en un proyecto que [puedes abrir en Overleaf](https://www.overleaf.com/project/new/template/20429?id=69894649\&templateName=Knitr+full+demo\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=).

### Guía de referencia

Algunas opciones de los chunks:

* `results`. Cambia el comportamiento de los resultados generados por el código R. Los valores posibles son:
  * `markup` Usa LaTeX para dar formato a la salida.
  * `asis` Muestra los resultados sin procesar de R.
  * `hold` Retiene los resultados y los coloca al final del chunk.
  * `hide` Oculta los resultados.
* `echo`. Indica si se incluye el código fuente de R. Otros parámetros posibles:
  * `echo=2:3` muestra solo la segunda y la tercera línea;
  * `echo=-2:-3` excluye solo la segunda y la tercera línea.
* `cache`. Indica si se almacena en caché el chunk de código. Los valores posibles son: `TRUE` y `FALSE`
* `highlight`. Indica si se resalta el código fuente. Los valores posibles son: `TRUE` y `FALSE`
* `background`. Color de fondo del chunk. Se pueden usar los formatos rgb y HTML. El valor predeterminado es *"#F7F7F7"*.


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