> 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/es/mas-temas/29-knitr.md).

# Knitr

Como se señala en Wikipedia, [Knitr es un motor para la generación dinámica de informes con R](https://en.wikipedia.org/wiki/Knitr), un lenguaje de programación orientado a la estadística. Este artículo explica cómo añadir código R a su documento LaTeX para generar una salida dinámica.

En una distribución estándar de LaTeX debe tener R configurado en su sistema operativo y ejecutar algunos comandos especiales para compilarlo. Overleaf puede ahorrarle la molestia, **knitr** funciona de inmediato.

## Introducción

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
\documentclass{article}
\begin{document}

Puede escribir comandos de R en su documento \LaTeX{} que se procesarán y cuya salida se incluirá en el documento:

<<>>=
# Crear una secuencia de números
X = 2:10

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

@
\end{document}
```

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

&#x20;[Abre este `knitr` ejemplo 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 ve, el texto entre los caracteres `<<>>=` y `@` es código R; este código y su salida se imprimen en un formato similar al de una lista. Este fragmento de código puede tomar algunos parámetros adicionales para personalizar la salida dinámica. Consulte la siguiente sección.

## Fragmentos de código

Un bloque de código como el presentado en la sección anterior suele llamarse un *fragmento*. Puede establecer algunas opciones adicionales en los fragmentos de knitr. Vea el ejemplo a continuación:

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

Puede escribir comandos de R en su documento \LaTeX{} que se procesarán y cuya salida se incluirá en el documento:

<<echo=FALSE, cache=TRUE>>=
# Crear una secuencia de números
X = 2:10

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

@
\end{document}
```

![KnitrDemo2.png](/files/def6e4dc4e4ed5ae60d5e4db4016fa6a80ebc35a)

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

Hay tres opciones adicionales pasadas dentro de `<<` y `>>`.

**echo=FALSE**

Esto oculta el código y solo imprime la salida generada por R.

**cache=TRUE**

Si cache se establece en true, el fragmento no se ejecuta, solo los objetos generados por él. Esto ahorra tiempo si los datos de ese fragmento no han cambiado. Tenga en cuenta que la opción cache=TRUE no está actualmente soportada en Overleaf, pero debería funcionar localmente.

Vea el [guía de referencia](#reference-guide) para más opciones.

## Comandos en línea

Es posible acceder a objetos generados en un fragmento e imprimirlos en línea.

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

Puede escribir comandos de R en su documento \LaTeX{} que se procesarán y cuya salida se incluirá en el documento:

<<echo=FALSE, cache=TRUE>>=
# Crear una secuencia de números
X = 2:10

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

@

Así, la media de los datos es $\Sexpr{mean(X)}$
\end{document}
```

![KnitrDemo3.png](/files/d987c85e0d4642065fdb3b647fa85561decbad0c)

&#x20;[Abre este `knitr` ejemplo 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)}` imprime la salida devuelta por el código R `mean(X)`. Dentro de las llaves se puede pasar cualquier comando de R.

## Gráficas

También se pueden añadir gráficas a un **knitr** documento. Vea el siguiente ejemplo

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

@

La figura \ref{fig:plot1} es un histograma simple.

\end{document}
```

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

&#x20;[Abre este `knitr` ejemplo 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 datos almacenados en "data.txt", guardados en el directorio de trabajo actual. Se pasan al fragmento algunas opciones relacionadas con la figura.

**plot1**

Esta es la etiqueta usada para referenciar la gráfica. El prefijo "fig:" es obligatorio. Puede ver en el ejemplo 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 de figuras.

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

Ancho y alto de la figura.

**fig.cap="First plot"**

Título de la figura.

## Scripts externos de R

Puede importar partes de un script externo de R en un **knitr** documento. Esto es muy útil, ya que es bastante común escribir y depurar el script en un programa externo antes de incluirlo en su documento.

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

```latex
## ---- myrcode1
# Crear una secuencia de números
 X = 2:10

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

Observe las líneas

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

y

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

Estas marcan el comienzo de un fragmento de código y son obligatorias si quiere usar este script en nuestro documento, como se muestra en el siguiente fragmento de código:

```latex
El fragmento siguiente no se imprimirá

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

El código debe aparecer aquí

<<myrcode2>>=

@
```

![KnitrDemo5.png](/files/dbf72cef8c934813a18823f7ea9c7f840d76ec43)

El primer fragmento no se imprime; solo se usa para importar el script con el comando `read_chunk("mycode.R")`, por eso la opción `echo=FALSE` está establecida. Además, los scripts no deben almacenarse en caché. Una vez importado el script, puede imprimir un fragmento usando la etiqueta que estableció después de `## ----`. En este caso es `myrcode2`.

Hemos puesto todos los fragmentos de código del artículo en un proyecto que  [puede 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 fragmento**

* `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` Imprime los resultados en bruto de R.
  * `hold` Retiene los resultados de salida y los coloca al final del fragmento.
  * `hide` Oculta los resultados.
* `echo`. Indica si incluir el código fuente de R. Puede tomar otros parámetros, `echo=2:3` imprime solo la segunda y la tercera líneas; `echo=-2:-3` excluye solo la segunda y la tercera líneas.
* `cache`. Indica si almacenar en caché el fragmento de código. Los valores posibles son `TRUE` y `FALSE`
* `highlight`. Indica si resaltar el código fuente. Los valores posibles son `TRUE` y `FALSE`
* `background`. Color de fondo del fragmento; se pueden usar los formatos rgb y HTML, el valor predeterminado es *"#F7F7F7"*.

## Lectura adicional

Para más información, consulta

* [Resaltado de código con minted](/latex/es/formato/12-code-highlighting-with-minted.md)
* [Uso de colores en LaTeX](/latex/es/formato/13-using-colors-in-latex.md)
* [gráficas en LaTeX](/latex/es/especifico-de-un-campo/08-pgfplots-package.md)
* [Insertar imágenes](/latex/es/mas-temas/27-inserting-images.md)
* [Tablas](/latex/es/figuras-y-tablas/01-tables.md)
* [Colocación de imágenes y tablas](/latex/es/figuras-y-tablas/02-positioning-images-and-tables.md)
* [Paquete TikZ](/latex/es/figuras-y-tablas/05-tikz-package.md)
* [Expresiones matemáticas](/latex/es/matematicas/01-mathematical-expressions.md)
* [el **knitr** página web](http://yihui.name/knitr/)
* [el **knitr** manual del paquete](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/es/mas-temas/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.
