> For the complete documentation index, see [llms.txt](https://ayakaleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ayakaleaf-pro.ayaka.space/latex/uk/inshi-temi/29-knitr.md).

# Knitr

Як зазначено у Вікіпедії, [Knitr — це рушій для динамічного створення звітів за допомогою R](https://en.wikipedia.org/wiki/Knitr), мови програмування, орієнтованої на статистику. У цій статті пояснюється, як додати код R до документа LaTeX, щоб згенерувати динамічний вивід.

У стандартній дистрибуції LaTeX у вашій операційній системі має бути налаштований R, а для компіляції потрібно виконати деякі спеціальні команди. Overleaf може позбавити вас цих турбот, **knitr** працює одразу після встановлення.

## Вступ

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

```latex
\documentclass{article}
\begin{document}

Ви можете вводити команди R у ваш документ \LaTeX{}, які буде оброблено, а їхній вивід включено до документа:

<<>>=
# Створити послідовність чисел
X = 2:10

# Показати основні статистичні показники
summary(X)

@
\end{document}
```

![KnitrDemo1.png](/files/d174d1d2b971023535c773135d872db5034079ff)

&#x20;[Відкрийте цей `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; цей код і його вивід друкуються у форматі, подібному до списку. Цей фрагмент коду може приймати деякі додаткові параметри для налаштування динамічного виводу. Дивіться наступний розділ.

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

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

```latex
\documentclass{article}
\begin{document}

Ви можете вводити команди R у ваш документ \LaTeX{}, які буде оброблено, а їхній вивід включено до документа:

<<echo=FALSE, cache=TRUE>>=
# Створити послідовність чисел
X = 2:10

# Показати основні статистичні показники
summary(X)

@
\end{document}
```

![KnitrDemo2.png](/files/3d1082a41a3f37d857a7133fdf503d2689c816bf)

&#x20;[Відкрийте цей `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, фрагмент не запускається, а лише об’єкти, створені ним. Це економить час, якщо дані в цьому фрагменті не змінилися. Зверніть увагу, що параметр cache=TRUE наразі не підтримується в Overleaf, але локально він має працювати.

Дивіться [довідковий посібник](#reference-guide) для отримання додаткових параметрів.

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

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

```latex
\documentclass{article}
\begin{document}

Ви можете вводити команди R у ваш документ \LaTeX{}, які буде оброблено, а їхній вивід включено до документа:

<<echo=FALSE, cache=TRUE>>=
# Створити послідовність чисел
X = 2:10

# Показати основні статистичні показники
summary(X)

@

Отже, середнє значення даних дорівнює $\Sexpr{mean(X)}$
\end{document}
```

![KnitrDemo3.png](/files/b7f8be64311cf9bae4b338f88c5bba8e2ae87def)

&#x20;[Відкрийте цей `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
\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")

@

На рисунку \ref{fig:plot1} показано просту гістограму.

\end{document}
```

![KnitrDemo4.png](/files/40f5c8b292ecc7ba4fe8578e181bcade8acc9d2c)

&#x20;[Відкрийте цей `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.

**fig.height=4, fig.width=4**

Ширина та висота рисунка.

**fig.cap="First plot"**

Підпис до рисунка.

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

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

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

```latex
## ---- myrcode1
# Створити послідовність чисел
 X = 2:10

## ---- myrcode2
# Показати основні статистичні показники
summary(X)
```

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

```latex
## ---- myrcode1
```

та

```latex
## ---- myrcode2
```

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

```latex
Нижче наведений фрагмент не буде надруковано

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

Код має з’явитися тут

<<myrcode2>>=

@
```

![KnitrDemo5.png](/files/7a48456bfb0c74d629d663a5f4f3b7cb8d4f8778)

Перший фрагмент не друкується, а використовується лише для імпорту скрипта за допомогою команди `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"*.

## Додаткове читання

Для отримання додаткової інформації див.

* [Підсвічування коду за допомогою minted](/latex/uk/formatuvannya/12-code-highlighting-with-minted.md)
* [Використання кольорів у LaTeX](/latex/uk/formatuvannya/13-using-colors-in-latex.md)
* [графіки в LaTeX](/latex/uk/specializovani/08-pgfplots-package.md)
* [Вставлення зображень](/latex/uk/inshi-temi/27-inserting-images.md)
* [Таблиці](/latex/uk/risunki-ta-tablici/01-tables.md)
* [Розміщення зображень і таблиць](/latex/uk/risunki-ta-tablici/02-positioning-images-and-tables.md)
* [Пакет TikZ](/latex/uk/risunki-ta-tablici/05-tikz-package.md)
* [Математичні вирази](/latex/uk/matematika/01-mathematical-expressions.md)
* [сайті **knitr** вебсторінка](http://yihui.name/knitr/)
* [сайті **knitr** довідник пакета](https://bitbucket.org/stat/knitr/downloads/knitr-manual.pdf)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://ayakaleaf-pro.ayaka.space/latex/uk/inshi-temi/29-knitr.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
