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. Це дуже зручно, оскільки скрипт часто пишуть і налагоджують у зовнішній програмі, перш ніж включити його в документ.Припустімо, що у файлі mycode.R є такий код 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.