R Markdown

R Markdown – это язык разметки, который позволяет объединять код, его результаты, текст, графики и картинки. Он очень удобен для составления различных отчетов.

Давайте попробуем создать наш первый R Markdown(.Rmd) файл. Там, где мы создаем скрипт нужно выбрать R Markdown.

Далее выйдет окно, в котором нужно дать название отчета, имя автора, а также тип выходного файла. Используйте html, можно также пользоваться pdf, но для этого нужен установленный LaTeX.

После этого у вас откроется Rmd файл.

Любой Rmd файл состоит из следующих частей:

  • YAML Header – шапка документа, в которой указываются различные настройки того как должен выглядеть итоговый файл.
  • Глобальные настройки чанков – настройки, которые идут по умолчанию для всех чанков. Позже еще вернемся к этому более подробно.
  • Заголовок – имеется 6 уровней заголовков, количество решеток показывает уровень заголовка.
  • Текст – можно писать любой текст, который вы хотите.
  • Чанк – создается для того, чтобы отделить код от текста. Внутри чанка пишется код.

Давайте попробуем собрать этот файлик. Чтобы это сделать, нужно нажать на кнопку Knit, которая находится на панели для файла. После нажатия у вас появится html файлик.

Видим, что код находится в отдельном окошке. А также его результат выносится в отдельное окошко.

Основные элементы R Markdown

Жирный шрифт

Для выделения текста жирным можно использовать конструкцию **текст** или __текст__. Давайте попробуем! Сегодня мы изучаем R Markdown.

Курсивный шрифт

Чтобы сделать текст курсивным можно использовать конструкцию *текст* или _текст_. Пробуем! Для формирования отчетов удобно пользоваться R Markdown.

Моноширинный шрифт

Этот шрифт нужен для того, чтобы выделять куски кода прямо в тексте. Чтобы применить шрифт используем следующую конструкцию `текст`. Например, sum(x) не так заметен, как sum(x).

Верхние и нижние индексы

Можно поставить верхний и нижний индексы. Сначала пишем выражение, которое будет иметь эти индексы. Далее для верхнего индекса ставим ^^ и между ними пишем, что будет содержаться в верхнем индексе, для нижнего аналогично, но пишем между ~~. Например: R2i можно написать с помощью конструкции R^2^~i~.

Зачеркнутый текст

Чтобы зачеркнуть текст используйте конструкцию ~~текст~~. Например, я являюсь студентом преподавателем ВШЭ.

Экранирование служебных символов

Обратный слэш(\), звёздочка(*), знак доллара($) и нижнее подчеркивание(_) являются служебными командами. Но если вы хотите их напечать, то используйте перед этими знаками обратный слэш. \, $, _, * .

Тире и длинное тире

Чтобы использовать тире нужно поставить два знака минуса (--). Например, Среднее – это сумма всех значений деленное на их количество. Если же вы хотите использовать длинное тире, то нужно поставить три знака минуса (---). Пробуем! Дисперсия случайно величины — мера разброса значений случайной величины относительно её математического ожидания.

Гиперссылки

Чтобы выделить гиперссылку, нужно использовать конструкцию <ссылка>. Например, главная страница яндекса находится по адрессу https://yandex.ru . Иногда гиперссылка выглядит очень некрасиво и её можно спрятать. Для этого используем конструкцию [текст] (ссылка), без пробела между скобками. Сделаем наше последнее предложение более красивым. Главная страница яндекса.

Чанк

Чанк создается, для того, чтобы R Markdown понимал где находится код, который нужно запустить.

Чанк можно создать с помощью кнопки Insert.

Выглядит он следующим образом.

Внутри этого блока и нужно писать код. Буква r в фигурных скобках означает, что в чанке будет код на языке R. Дело в том, что можно использовать несколько языков программирования сразу.

Опции чанка

У чанков могут быть разные опции. Опции перечисляются через запятую внутри первых фигурных скобок.

echo

Данная опция может принимать логическое значение: TRUE или FALSE(default:TRUE). Она отвечает за вывод кода, находящийся в чанке. То есть код не будет отображен, но будет запущен и будет дан результат. Давайте попробуем на примере.

Просто выведем “Hello world!” и выставим TRUE в опции echo.

print('Hello world!')
## [1] "Hello world!"

А теперь попробуем выставить FALSE. Посмотрим, что поменяется.

## [1] "Hello world!"

Как видно, теперь код не высвечивается, но результат мы видим.

eval

Данная опция может принимать логическое значение: TRUE или FALSE(default:TRUE). Отвечает за исполнение кода в чанке. То есть, код не будет запущен, следовательно не будет и резульата. Это удобно, когда вы хотите показать только код.

print('Hello world')
## [1] "Hello world"

А теперь попробуем выставить FALSE. Посмотрим, что поменяется.

print('Hello world')

include

Данная опция может принимать логическое значение: TRUE или FALSE(default:TRUE). Отвечает за отображение кода и результата исполнения чанка. Удобно, если вы хотите сделать какие-то простые операции, но не хотите показывать ни код, ни результат.

m <- 10
m
## [1] 10

Если выставить FALSE, то код запустится, но мы не увидим ничего в документе.

message и warning

Даннык опции могут принимать логические значение: TRUE или FALSE(default:FALSE). Предотвращает появление сообщений или предупреждений в конечном файле.

error

Данная опция может принимать логическое значение: TRUE или FALSE(default:FALSE). Если у вас имеется ошибка в чанке, то файлик не соберется. Если вы все таки хотите увидеть файлик и заняться ошибкой позде, то можно поставить этот параметр равный TRUE.

'name' + 5
## Error in "name" + 5: нечисловой аргумент для бинарного оператора

comment

Данная опция может принимать строковое значение(default:‘##’). Отвечает за префикс перед каждой строкой вывода результата.

print('Hello world')
## [1] "Hello world"

А теперь поменяем префикс.

print('Hello world')
-> [1] "Hello world"

highlight

Данная опция может принимать логическое значение: TRUE или FALSE(default:TRUE). Отвечает за подсвечивание синтаксиса кода.

collapse

Данная опция может принимать логическое значение: TRUE или FALSE(default:FALSE). Можно объединить вывод кода в один блок или несколько.

print(2 + 2)
## [1] 4
print('Hello world!')
## [1] "Hello world!"

А теперь с FALSE.

print(2 + 2)
## [1] 4
print('Hello world!')
## [1] "Hello world!"

Остальные опции чанков можно найти по этой cсылке.

Дефолтные значения чанков

Например, вы хотите показывать в файле только код. Для этого в каждом чанке нужно написать eval=FALSE. Чтобы этого не делать, в самом начале файла после YAML Header идет чанк, в котором можно установить дефолтные значения опций чанков.

Inline code

В R Markdown можно вставлять значение какой-то переменной прямо в текст. Давайте попробуем. Создадим матрицу.

m <- matrix(1:12, nrow = 3, ncol = 4)

В матрице m имеется 4 столбцов и 3 строчек.

LaTeX в R Markdown

Есть такой язык верстки как LaTeX! С его помощью можно делать крутые формулы.

Формулы можно записывать между двумя долларами: $тут формула$.

Первый замечательный предел: \(\lim_{x \to 0}\frac{\sin(x)}{x} = 1\) .

Выглядит не очень. Формулу лучше выносить на отдельную строчку. Чтобы это сделать используем двойные знаки доллара.

Второй замечательный предел:) \[ \lim_{n \to \infty} \left(1+\frac{1}{n}\right)^n = e \]

Списки

Нумерованный список

Чтобы сделать нумерованный список можно просто ставить цифру с точкой и сделав отступ.

  1. Рассказать про некоторые фишки в R.
  2. Разобрать R Markdown.
  3. Дать домашку.

Маркированный список

  • R
  • RStudio
  • R Markdown

Двойной список

  1. Python
    • PyCharm
    • IPython
    • Jupyter notebook
  2. R
    • RStudio
    • Jupyter notebook

Блоки

A friend once said:

It’s always better to give than to receive.

Тут должна быть цитата)

Картинки

Картинка в студию

Картинка в студию

Таблички

Таблички делаются следующим образом.

First Header Second Header
Content Cell Content Cell
Content Cell Content Cell

Горизонтальная линия

Можно сделать горизонтальную линию, которая горизонтально поделит файл. Сделать можно с помощью 3 или более тире подряд.


HTML

Обычно инструментов R Markdown хватает, чтобы делать отчеты. Но так как на выходе вы получаете HTML страничку, вы можете пользоваться и инструментами HTML.

Например, создавать таблички удобным способом на сайте. А потом просто вставлять код, который получили.

Или менять цвет текста.

Код Текст
<font color=“red”>This is some text!</font> This is some text!
<font color=“green”>This is some text!</font> This is some text!
<font color=“blue”>This is some text!</font> This is some text!

YAML Header

В YAML Header можно добавлять очень много классных штук. Например, если вы знаете CSS, то можете добавить какую-то стилистику вашему файлу. Также можно задать удобную навигацию с помощью параметров toc и toc_float. Есть очень много параметров, которые можно прочитать в документации.

Примечания

Материалы по \(\LaTeX\) можно найти на репозитории моего друга.1

Также можно посмотреть курс от ВШЭ на Coursera2