> ## 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. Это очень удобно, поскольку скрипт часто пишут и отлаживают во внешней программе, прежде чем включить его в документ.

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