Відносини між R Markdown, Knitr, Pandoc і Bookdown


90

Який зв’язок між функціональністю R Markdown, Knitr, Pandoc та Bookdown?

Конкретно, що таке «розподіл праці» між цими пакетами при перетворенні документів розмітки із вбудованим кодом R (наприклад, .Rnwабо .Rmd) у кінцеві результати (наприклад, .pdfабо .html)? І якщо Knitr використовується для обробки RMarkdown, що робить rmarkdownпакет і чим він відрізняється від markdown package?

Відповіді:


135

Пандок

Pandoc - це конвертер документів. Вона може конвертувати з цілого ряду різних форматів розмітки для багатьох інших форматів, таких як .doc, і .pdfт.д.

Pandoc - це інструмент командного рядка без графічного інтерфейсу. Це незалежна частина програмного забезпечення, окрема від R. Однак, вона постачається в комплекті з R Studio, оскільки rmarkdownпокладається на неї для перетворення документів.

Pandoc не тільки перетворює документи, але й додає функціональність поверх базової мови розмітки, щоб він міг підтримувати більш складні результати.

R Маркдаун

R Націнка базується на знижці:

Розмітка (мова розмітки)

Markdown - це полегшена мова розмітки з синтаксисом форматування простого тексту, розроблена таким чином, щоб її можна було перетворити в HTML та багато інших форматів. Файл націнки - це звичайний текстовий файл, який зазвичай отримує розширення .md.

Як і інші мови розмітки, такі як HTML та латекс, він повністю незалежний від R.

Чітко визначеного стандарту Markdown не існує. Це призвело до фрагментації, оскільки різні постачальники пишуть власні варіанти мови, щоб виправити недоліки або додати відсутні функції.

Націнка (пакет R)

markdown- це пакет R, який перетворює .Rmdфайли в HTML. Це попередник rmarkdown, який пропонує набагато більше функціональних можливостей. Більше не рекомендується використовувати.

R Markdown (мова розмітки)

R Markdown - це розширення синтаксису розмітки. R Файли Markdown - це текстові файли, які зазвичай мають розширення .Rmd. Вони пишуться з використанням розширення синтаксису розмітки, що дозволяє вбудовувати в них код R таким чином, який згодом може бути виконаний.

Оскільки очікується, що вони будуть оброблені rmarkdownпакунком, можна використовувати синтаксис розмітки Pandoc як частину файлу розмітки R. Це розширення до початкового синтаксису розмітки, що забезпечує додаткову функціональність, таку як вихідний HTML / латекс та таблиці.

R Markdown (пакет)

Пакет R rmarkdown- це бібліотека, яка обробляє та перетворює .Rmdфайли в безліч різних форматів.

Основна функція - це те, rmarkdown::renderщо стоїть на плечах пандока . Ця функція 'перетворює вхідний файл у вказаний вихідний формат за допомогою pandoc. Якщо введення вимагає в'язання, knitr::knitвоно викликається до pandoc.

Метою пакету RMarkdown є просто забезпечити достатньо хороші значення за замовчуванням та зручний для R інтерфейс для налаштування параметрів Pandoc. .

Метадані YAML, що відображаються у верхній частині файлів RMarkdown, спеціально передаються опції rmarkdown::renderдля керування процесом побудови.

Зауважте, що RMarkdown має справу лише із синтаксисом розмітки. Якщо ви хочете перетворити файл .Rhtmlабо .Rnwфайл, вам слід скористатися вбудованими зручними функціями Knitr, такими як knitr::knit2htmlіknitr:knit2pdf

В'язальниця

Knitr бере звичайний текстовий документ із вбудованим кодом, виконує код і "в'яже" результати назад у документ.

Наприклад, він перетворює

Основною функцією є, knitr::knitі за замовчуванням це перегляне вхідний документ і спробує вгадати, якого типу це - Rnw, Rmd тощо.

Ця основна функція виконує три ролі: - аналізатор джерела, який переглядає вхідний документ і виявляє, які частини є кодом, який користувач хоче оцінити. - Оцінювач коду, який оцінює цей код. - Вихідний візуалізатор, який записує результати оцінки назад у документ у форматі, який інтерпретується за вихідним типом виводу. Наприклад, якщо вхідним файлом є .Rmd, вихідний візуалізатор позначає результат оцінки коду у .mdформаті.

Перетворення між форматами документів

Knitr не перетворює між форматами документів, наприклад, перетворює a .mdв a .html. Однак він надає деякі зручні функції, які допоможуть вам використовувати для цього інші бібліотеки. Якщо ви використовуєте rmarkdownпакет, вам слід ігнорувати цю функцію, оскільки вона була замінена rmarkdown::render.

Прикладом може бути knitr:knit2pdf: "В’язати вхідний документ Rnw або Rrst та скомпілювати у PDF за допомогою texi2pdf або rst2pdf".

Потенційним джерелом плутанини є те knitr::knit2html, що "є зручною функцією для в'язання вхідного джерела markdown::markdownToHTMLрозмітки та виклику для перетворення результату в HTML". Зараз це застаріла функціональність, оскільки markdownпакет був замінений rmarkdownпакетом. Див. Цю примітку .

Bookdown

Пакет bookdown побудований поверх R Markdown і успадковує простоту синтаксису Markdown, а також можливість використання декількох типів вихідних форматів (PDF / HTML / Word /…).

Він пропонує такі функції, як багатосторінковий вихід HTML, нумерація та перехресне посилання на рисунки / таблиці / розділи / рівняння, вставка деталей / додатків та імпорт стилю GitBook ( https://www.gitbook.com ) для створення елегантного та привабливого HTML сторінки книг.


2
Мені це здалося дуже заплутаним, тому я зробив усе можливе тут. Будь ласка, відредагуйте або додайте іншу відповідь, якщо у мене щось не так ...
RobinL

6
Одним із аспектів, який я вважаю заплутаним, є документація щодо параметрів, що передаються на кожен крок набору інструментів. Інтерактивної довідки майже не існує (наприклад, автозавершення), і треба здогадуватися, які параметри слід викликати в заголовках yaml, або через knitr_opts(я завжди забуваю, як це називається), або за допомогою власних аргументів pandoc, або за допомогою додаткових файлів yam, або спеціальних шаблон pandoc ... Іноді відчувається трохи джунглів, особливо коли ви додаєте LaTeX до ланцюжка.
баптист

3
@baptiste Я повністю згоден. І це якраз причина, чому я віддаю перевагу документам RNW з оголеним LaTeX. Жодного проміжного pandocкроку, менше магії, менше плутанини. Тільки очевидно крута крива навчання LaTeX. На мій погляд, Rmarkdown чудовий, коли вас влаштовують прості речі за замовчуванням. Але як тільки вам доводиться його налаштовувати, складність швидко зростає.
ЗР.

3
Це найкраще пояснення, яке я знайшов із усього цього. Це дуже заплутано для початківців або навіть тих, хто має багаторічний досвід роботи з R та латексом окремо, як я. Відмінний пост.
Студент

2
@StatsStudent Я думаю, що попередня версія шпаргалки rstudio rmarkdown мала схему, яка була дуже корисною для розуміння різних етапів створення вихідних даних із rmarkdown. Можливо, відповідь тут може стосуватися діаграми?
Марк Ніл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.