Overleaf поддерживает интеграцию с knitr, которая позволяет добавлять код R в документ LaTeX для получения динамически генерируемого вывода.Документы, содержащие код R, должны сохраняться с расширением .Rtex или .Rnw, иначе код не будет работать. Рассмотрим пример:
\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}
Открыть этот пример knitr в OverleafКак видите, текст между символами <<>>= и @ — это код R. Этот код и его вывод печатаются в формате, похожем на листинг. Такой фрагмент кода может принимать дополнительные параметры для настройки динамического вывода, как описано в следующем разделе.
Блок кода, подобный показанному в предыдущем разделе, обычно называется чанком (chunk). Для чанков knitr можно задавать дополнительные параметры. См. пример ниже:
\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 Скрывает код и выводит только результат, сгенерированный R.
cache=TRUE Если для cache установлено значение true, чанк не выполняется, используются только созданные им объекты. Это экономит время, если данные в чанке не изменились.
Обратите внимание, что параметр cache=TRUE в настоящее время не поддерживается в Overleaf, но должен работать локально.
Объекты, созданные в чанке, можно использовать и выводить прямо в тексте.
\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}
Открыть этот пример knitr в OverleafКоманда \Sexpr{mean(X)} выводит результат, возвращаемый кодом R mean(X). Внутри фигурных скобок можно передать любую команду R.
Открыть этот пример knitr в OverleafЭта гистограмма использует данные из файла “data.txt”, сохранённого в текущем рабочем каталоге. Чанку передаётся несколько параметров, относящихся к рисунку.plot1 Метка, используемая для ссылки на график. Префикс “fig:” обязателен. В примере видно, что ссылка на рисунок выполняется с помощью \ref{fig:plot1}. fig.pos="t" Параметр расположения. Это тот же параметр, что используется в окружении figure. fig.height=4, fig.width=4 Ширина и высота рисунка. fig.cap="First plot" Подпись к рисунку.
В документ knitr можно импортировать части внешнего скрипта R. Это очень удобно, поскольку скрипт часто пишут и отлаживают во внешней программе, прежде чем включить его в документ.Предположим, что у нас есть следующий код R в файле mycode.R, который мы включаем в документ LaTeX:
## ---- myrcode1# Create a sequence of numbers X = 2:10## ---- myrcode2# Display basic statistical measuressummary(X)
Обратите внимание на строки:
## ---- myrcode1
и
## ---- myrcode2
Они отмечают начало фрагмента кода и обязательны, если вы хотите использовать этот скрипт в документе, как показано в следующем фрагменте кода:
The chunk below will not be printed<<echo=FALSE, cache=FALSE>>=read_chunk("mycode.R")@The code must show up here<<myrcode2>>=@
Первый чанк не выводится и используется только для импорта скрипта с помощью команды read_chunk("mycode.R"). Поэтому задан параметр echo=FALSE. Кроме того, скрипты не должны кешироваться. После импорта скрипта можно вывести чанк, используя метку, указанную после ## ----. В данном случае это myrcode2.Мы собрали все фрагменты кода из этой статьи в проект, который можно открыть в Overleaf.