Итак, что же такое RMD-документы? Это документы, созданные с использованием языка разметки R Markdown. Если знакомы с знаменитой системой разметки текстов LaTeX, то вы найдете здесь много общего. С помощью языка R Markdown производится описание размещения текста и порождаемые R кодом картинок и таблиц в итоговых документов, которые могут иметь формат PDF файла, HTML файла или даже word-овского документа. В частном случае может создать презентации, разбитые на слайды. Мы вас познакомим только с самыми основами языка R Markdown. Для создания этих самых RMD документов, нам необходимо через пункт меню File, New File, и здесь выбрать позицию R Markdown, и далее появится такая табличка, в которой необходимо заполнить два поля. В принципе их можно не заполнять, но лучше заполнить. Это название вашего документа и автор документа. Здесь необходимо выбрать какой тип документа будет создан: HTML файл, PDF или word-овский документ. Мы будем с вами сейчас говорить о том, как создаются самые простые документы в формате HTML. Итак, после того как вы указали все необходимое, появляется вот такой шаблон, который состоит из нескольких важных частей. Первая часть - это заголовок. В этом заголовке указывается параметр title, в котором указываются заголовок вашего документа, автор, дата создания, в принципе автора и дату создания можно убрать, как и title, но, что очень важно, это убрать нельзя, это параметр output, в котором будет указан имя документа, название типа того документ, который будет создавать, HTML документ. А далее вы увидите такие забавные серые полоски, которые чередуются с текстовыми элементами. Вот это то, что является самым важным в RMD документах, это текстовые блоки и так называемые чанки. Итак, текст RMD документа далее необходимо превратить в финальный документ в формате, ну, в данном случае HTML файла. Делается это с помощью специальной функции, который называется knit из пакета knitr. И это функция создает тот самый итоговый документ, в формате которой указан в заголовке RMD документа. В данном случае HTML файл. И вы далее, нажав knitr, можете начать создавать этот самый финальный документ. Однако перед тем, как мы будем создавать итоговый документ, давайте сперва разберемся, что такой чанк. Чанк - это исполняемый код, встроенный в текст. Это самое ценное в RMD документах, и чанк отделен от остального текста символами три апострофа, далее идет фигурная скобка, вначале который стоит буква r, и в конце чанка тоже стоит три апострофа. И, соответственно, если вы напишете вот такое сочетание, то R студия автоматически подсвечивает ту область, которая граничит с этими значками как некую серую область, это и есть чанк, который будет на самом деле аналог того окна, в котором вы записываете R скрипт, который далее может активироваться. Вставка области чанка в вашем документе, может происходить либо вручную, через сочетание, вы набираете 3 апострофа, фигурную скобку, R, фигурная скобка и 3 апострофа, тогда это будет автоматически чанком, либо вы можете сделать это с помощью сочетания клавиш Ctrl+Alt+I. Это сочетание приведет к тому, что появится новый чанк. И вот, давайте попробуем сейчас используя чанки, создать некий RMD документ, который будет включать в себя результаты обработки того data фрейма, который мы с вами уже используем, это данные по весу матерей и их детей. Давайте напишем просто некоторый текст в этом RMD документе. Посмотрите, первый чанк, который будет автоматом создана при загрузке образца, это будет так называемый настроечный чанк, в котором указываются опции функции knitr. Для этого здесь в принципе ничего менять не надо, можно лишь дописывать, поэтому этот чанк пока рассматривать не будем. А далее мы начинаем писать наш текст. Допустим вот здесь я пишу некоторые тексты, это мой первый RMD документ, и я хочу здесь написать какой-то дополнительный текст "частотное распределение веса новорожденных у курящих и некурящих матерей", например, такой текст. Обратите внимание, если я поставил два хештега перед некой фразой, то это фраза будет рассматриваться как заголовок второго уровня, то есть в нашем документе, итоговом, это будет выделено более крупным шрифтом, и это будет заголовок. Абзацы, текстовые абзацы, обязательно начинаются с новой строчки, и если вы хотите, чтобы это были действительно разные абзацы, то, как и в системе LaTeX, необходимо между этими абзацами сделать еще один дополнительный пробел. Далее, мы хотим, чтобы после фразы "частотное распределение веса новорожденных у курящих и некурящих матерей" появилось частотная гистограмма. Мы создаем чанк, вот он, и в этом чанке мы производим все те же самые действия, которые были бы необходимы для порождение того или иного графика. Мы активируем функцию ggplot2, пакет ggplot2, мы активируем пакет MASS, чтобы прочитать данные, мы присваиваем переменной Baby имя того встроенного data set-а, который есть в пакете MASS. Далее, мы с помощью уже известных нам действий, тем значением переменной Smoke, которые равны единице присваиваем значении Smoker, там где ноль - Non-smoker. Мы будем это делать немножко иначе, можем вот так сделать, и далее, рисуем картинку с помощью функции ggplot. Строим базовый уровень, используем geon density, все точно так же, как мы с вами делали, и используем тему black and white. Ну и наконец, после этого чанка, напишем ещё одну фразу, которая будет после рисунка. Рисунок там позволяет увидеть явную тенденцию, какой-то вот такой текст, который мы хотим донести до читателя. А далее мы должны нажать кнопочку knit, вот эту. Там изображен клубочек со спицами, то есть мы теперь должны связать все эти чанки и текстовые элементы воедино. В результате работы функции knitr появляется итоговый HTML документ, который можно просмотреть в окне обычного браузера, которого мы привыкли. Что же это будет за документ такой? Вот перед вами фрагмент этого документа, который можно посмотреть где угодно, в любом браузере. Мы видим, что у него будет заголовок untitled, мы его не написали, хотя могли написать, здесь будет имя автора, который в заголовке RMD документа надо было указать, и здесь будет дата создания этого RMD документа. Далее, мы в качестве заголовка второго уровня, помните, 2 хештега, написали "Мой первый RMD документ", вот здесь он появился. Далее, тот текст, который мы, собственно, написали, а далее идет текстовый чанк, который мы написали для порождения вот этой картинки, которая настроилась в наш HTML документ. На самом деле здесь, вот этот самый чанк, который присутствует в финальном документе, может быть и лишний, хотя с точки зрения reproducible research, он на самом деле очень полезен, поскольку он позволяет читателю досконально изучить ход моих действий с данными. Однако, если вы хотите породить финальный чистовой документ, в такой ситуации обычно коды, которые порождают те или иные рисунки, не вставляются. Для того, чтобы убрать этот самый чанк из финального документа, необходимо воспользоваться настройками чанков, и для этого мы будем указывать в параметрах чанка некоторые дополнительные слова. Что это за параметры, которые нам нужно будут указать? Это может быть параметр echo, который включает или отключает присутствие этого чанка в финальном документе. Если мы напишем echo false, то тогда этот текст, соответствующий коду, не будет представлен в финальном тексте нашего документа. Можно указать высоту картинки, можно указать центрирование картинки, права, справа, слева, по центру, и наконец тот самый параметр eval, он позволяет, сказать, будет этот самый чанк просчитываться в ходе создания финального документы или нет. Например, вы можете перевести некоторый код, который не должен быть активирован, а просто вы должны привести результаты этого кода, поэтому если мы напишем eval-TRUE тогда этот код будет реализован. И вот, посмотрите как будет выглядеть финальная картинка, которую мы настроили чанк. Этот чанк исчезает, он не изображается, поскольку мы указали echo false, и появляется вот такой, уже более аккуратный документ, в котором присутствуют все необходимое, то есть здесь есть некоторый текст, есть картинка, которая порождена кодом, которой мы сейчас не видим, есть подпись картинки, собственно, мы можем продолжать создание нашего RMD документа. Давайте еще раз перечислим наиболее важные параметры чанков, на самом деле их очень много, и нужно специально изучить этот вопрос и вы увидите там достаточно много настроек. Но к числу наиболее важных относятся следующие: во-первых, это параметр echo, который говорит о том, нужно ли переводить в финальном документе содержимое этого чанка, соответственно, если вы пишете echo false, то тогда в финальном документе все, что написано внутри чанка, представлено не будет, если говорите true, то тогда вот эта самая серый область с теми кодами, которые там написаны, все полностью приведено в финальном документе. Параметр eval позволяет сказать системе запускать ли код, переведенный в чанке, или его можно просто оставить как текстовый кусочек такой. То есть, если вы хотите перевести некий код, который не нужно запускать при создании финального документа, то вы пишете eval=false, и если вы хотите, чтобы этот чанк запустился, и появились результаты его работы, то вы пишете eval=true. Дальше, большой набор чанков, которые начинаются со слова fig, да, это от слова картинка, соответственно это будет набор параметров для регуляции положения и размера рисунков. Там довольно много параметров, которые позволяют изменять размер рисунка, изменять положение рисунка на странице и тому подобные операции. И наконец параметр warning, который позволяет включать или отключать сообщения о тех или иных функций, то есть если вы не хотите, чтобы эти сообщения функций попадали в финальный документ, вы пишете wаrning false. На самом деле очень многие функции, говорящие такие, они любят сообщать какие-то сведения, скажем о той версии пакета, который вы подключаете, и тому подобное вещи, которые на самом деле в финальном документе совершенно не нужны. Поэтому, обычно, при создании тех или иных финальных документов, пишут wаrning=false, так что регулируя вот эти параметры чанков, можно добиться практически любой презентабельности той или иной картинки или той или иной таблицы. Соответственно, в финальном документе вы получите результаты работы этих чанков. В этом суть заключается того, что называется литературное программирование.