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:
\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 numbersX = 2:10# Display basic statistical measuressummary(X)@\end{document}
Abrir este ejemplo de knitr en OverleafComo 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.
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:
\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 numbersX = 2:10# Display basic statistical measuressummary(X)@\end{document}
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.
Ten en cuenta que la opción cache=TRUE no es compatible actualmente con Overleaf, pero debería funcionar en local.
Es posible acceder a los objetos generados en un chunk y mostrarlos en línea.
\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 numbersX = 2:10# Display basic statistical measuressummary(X)@So, the mean of the data is $\Sexpr{mean(X)}$\end{document}
Abrir este ejemplo de knitr en OverleafEl 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.
Abrir este ejemplo de knitr en OverleafEste 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. fig.height=4, fig.width=4 Anchura y altura de la figura. fig.cap="First plot" Título (caption) de la figura.
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:
## ---- myrcode1# Create a sequence of numbers X = 2:10## ---- myrcode2# Display basic statistical measuressummary(X)
Fíjate en las líneas:
## ---- myrcode1
y
## ---- 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:
The chunk below will not be printed<<echo=FALSE, cache=FALSE>>=read_chunk("mycode.R")@The code must show up here<<myrcode2>>=@
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.