> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Код R (knitr)

Overleaf має інтеграцію з **knitr**, яка дає змогу додавати код R до документа LaTeX для створення динамічного виводу.

Документи, що містять код R, потрібно зберігати з розширенням `.Rtex` або `.Rnw`, інакше код не працюватиме. Розгляньмо приклад:

```latex wrap theme={null}
\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 numbers
X = 2:10

# Display basic statistical measures
summary(X)

@
\end{document}
```

<img src="https://mintcdn.com/ayakaleaf-pro/v5p5w9EX1_dka_GD/images/texlive/knitrdemo1.png?fit=max&auto=format&n=v5p5w9EX1_dka_GD&q=85&s=4cd20c6acbeeab2b1ae2b115efece70d" alt="KnitrDemo1.png" width="2150" height="681" data-path="images/texlive/knitrdemo1.png" />

[Відкрити цей приклад `knitr` в Overleaf](https://www.overleaf.com/project/new/template/20421?id=69881107\&templateName=Knitr+demo+1\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

Як бачите, текст між символами `<<>>=` і `@` — це код R. Цей код і його вивід друкуються у форматі, подібному до лістингу. Цей фрагмент коду може приймати додаткові параметри для налаштування динамічного виводу, як описано в наступному розділі.

### Фрагменти коду

Блок коду, подібний до наведеного в попередньому розділі, зазвичай називають *фрагментом* (chunk). Для фрагментів knitr можна задавати додаткові параметри. Див. приклад нижче:

```latex wrap theme={null}
\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 numbers
X = 2:10

# Display basic statistical measures
summary(X)

@
\end{document}
```

<img src="https://mintcdn.com/ayakaleaf-pro/v5p5w9EX1_dka_GD/images/texlive/screenshot-2025-12-16-143420.png?fit=max&auto=format&n=v5p5w9EX1_dka_GD&q=85&s=9c79c98b1894d1cd22f783c29356de1f" alt="KnitrDemo2.png" width="1910" height="559" data-path="images/texlive/screenshot-2025-12-16-143420.png" />

[Відкрити цей приклад `knitr` в Overleaf](https://www.overleaf.com/project/new/template/20423?id=69885763\&templateName=Knitr+demo+2\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

Між `<<` і `>>` передано два додаткові параметри.

* `echo=FALSE` Приховує код і друкує лише вивід, згенерований R.
* `cache=TRUE` Якщо cache має значення true, фрагмент не виконується повторно — використовуються лише згенеровані ним об'єкти. Це заощаджує час, якщо дані в цьому фрагменті не змінилися.

  <Info><em>Зауважте, що параметр cache=TRUE наразі не підтримується в Overleaf, але має працювати локально.</em></Info>

Інші параметри див. у [довідковому посібнику](https://learn.overleaf.com/learn/Knitr#Reference_guide).

### Вбудовані команди

Можна звертатися до об'єктів, згенерованих у фрагменті, і друкувати їх безпосередньо в тексті.

```latex wrap theme={null}
\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 numbers
X = 2:10

# Display basic statistical measures
summary(X)

@

So, the mean of the data is $\Sexpr{mean(X)}$
\end{document}
```

<img src="https://mintcdn.com/ayakaleaf-pro/v5p5w9EX1_dka_GD/images/texlive/screenshot-2025-12-16-143647.png?fit=max&auto=format&n=v5p5w9EX1_dka_GD&q=85&s=8b59926a477373b2787f884267d7c263" alt="KnitrDemo3.png" width="1910" height="630" data-path="images/texlive/screenshot-2025-12-16-143647.png" />

[Відкрити цей приклад `knitr` в Overleaf](https://www.overleaf.com/project/new/template/20425?id=69886866\&templateName=Knitr+demo+3\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

Команда `\Sexpr{mean(X)}` друкує результат, повернутий кодом R `mean(X)`. Усередині фігурних дужок можна передати будь-яку команду R.

### Графіки

До документа knitr також можна додавати графіки, як у цьому прикладі:

```latex wrap theme={null}
\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")

@

The figure \ref{fig:plot1} is simple histogram.

\end{document}
```

<img src="https://mintcdn.com/ayakaleaf-pro/GmaXa-Cu4QQRFT4C/images/texlive/screenshot-2025-12-16-143811.png?fit=max&auto=format&n=GmaXa-Cu4QQRFT4C&q=85&s=af1985b1e5b5ce56b777c5d9e3066420" alt="KnitrDemo4.png" width="1915" height="756" data-path="images/texlive/screenshot-2025-12-16-143811.png" />

[Відкрити цей приклад `knitr` в Overleaf](https://www.overleaf.com/project/new/template/20427?id=69890965\&templateName=Knitr+demo+3\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

Ця гістограма використовує дані з файлу "data.txt", збереженого в поточному робочому каталозі. Фрагменту передано кілька параметрів, пов'язаних із рисунком.

`plot1` Мітка, яка використовується для посилання на графік. Префікс "fig:" обов'язковий. У прикладі видно, що на рисунок посилаються через `\ref{fig:plot1}`. `fig.pos="t"` Параметр розташування. Такий самий, як і в [середовищі figure](https://learn.overleaf.com/learn/Positioning_images_and_tables#The_figure_environment). `fig.height=4, fig.width=4` Ширина та висота рисунка. `fig.cap="First plot"` Підпис до рисунка.

### Зовнішні скрипти R

До документа knitr можна імпортувати частини зовнішнього скрипта R. Це дуже зручно, оскільки скрипт часто пишуть і налагоджують у зовнішній програмі, перш ніж включити його в документ.

Припустімо, що у файлі `mycode.R` є такий код R, який ми включаємо в наш документ LaTeX:

```r theme={null}
## ---- myrcode1
# Create a sequence of numbers
 X = 2:10

## ---- myrcode2
# Display basic statistical measures
summary(X)
```

Зверніть увагу на рядки:

```r theme={null}
## ---- myrcode1
```

і

```r theme={null}
## ---- myrcode2
```

Вони позначають початок фрагмента коду й обов'язкові, якщо ви хочете використати цей скрипт у документі, як показано в наступному фрагменті коду:

```r theme={null}
The chunk below will not be printed

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

The code must show up here

<<myrcode2>>=

@
```

<img src="https://mintcdn.com/ayakaleaf-pro/v5p5w9EX1_dka_GD/images/texlive/knitrdemo5.png?fit=max&auto=format&n=v5p5w9EX1_dka_GD&q=85&s=0f1fd4088c9359058547a7c58f121bd5" alt="KnitrDemo5.png" width="1544" height="436" data-path="images/texlive/knitrdemo5.png" />

Перший фрагмент не друкується й використовується лише для імпорту скрипта командою `read_chunk("mycode.R")`. Саме тому встановлено параметр `echo=FALSE`. Крім того, скрипти не повинні кешуватися. Після імпорту скрипта можна надрукувати фрагмент, використовуючи мітку, задану після `## ----`. У цьому випадку це `myrcode2`.

Ми зібрали всі фрагменти коду зі статті в проєкт, який [можна відкрити в Overleaf](https://www.overleaf.com/project/new/template/20429?id=69894649\&templateName=Knitr+full+demo\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=).

### Довідковий посібник

Деякі параметри фрагментів:

* `results`. Змінює поведінку результатів, згенерованих кодом R. Можливі значення:
  * `markup` Форматувати вивід за допомогою LaTeX.
  * `asis` Друкувати необроблені результати з R.
  * `hold` Утримувати результати виводу й виводити їх наприкінці фрагмента.
  * `hide` Приховати результати.
* `echo`. Чи включати вихідний код R. Інші варіанти:
  * `echo=2:3` друкує лише другий і третій рядки;
  * `echo=-2:-3` виключає лише другий і третій рядки.
* `cache`. Чи кешувати фрагмент коду. Можливі значення: `TRUE` і `FALSE`
* `highlight`. Чи підсвічувати вихідний код. Можливі значення: `TRUE` і `FALSE`
* `background`. Колір фону фрагмента. Можна використовувати формати rgb та HTML. Значення за замовчуванням — *"#F7F7F7"*.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.