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:
\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 exemplo de knitr no OverleafComo 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.
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:
\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=FALSEOculta o código e imprime apenas a saída gerada pelo R.
cache=TRUESe 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.
Observe que a opção cache=TRUE não é suportada atualmente no Overleaf, mas deve funcionar localmente.
É possível acessar objetos gerados em um chunk e imprimi-los inline.
\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 exemplo de knitr no OverleafO comando \Sexpr{mean(X)} imprime a saída retornada pelo código R mean(X). Qualquer comando R pode ser passado entre as chaves.
Abrir este exemplo de knitr no OverleafEste histograma usa dados armazenados em “data.txt”, salvo no diretório de trabalho atual. Algumas opções relacionadas à figura são passadas ao chunk.plot1Este é 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.fig.height=4, fig.width=4Largura e altura da figura.fig.cap="First plot"Legenda da figura.
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:
## ---- myrcode1# Create a sequence of numbers X = 2:10## ---- myrcode2# Display basic statistical measuressummary(X)
Observe as linhas:
## ---- myrcode1
e
## ---- 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:
The chunk below will not be printed<<echo=FALSE, cache=FALSE>>=read_chunk("mycode.R")@The code must show up here<<myrcode2>>=@
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.