R Markdown、Knitr、Pandoc、およびBookdownの関係


93

R Markdown、Knitr、Pandoc、Bookdownの機能の間にはどのような関係がありますか?

具体的には、Rコード(eg.Rnwまたは.Rmd)が埋め込まれたマークアップドキュメントを最終出力(eg.pdfまたは.html)に変換する際の、これらのパッケージ間の「分業」とは何ですか?また、Knitrを使用してRMarkdownを処理する場合、rmarkdownパッケージは何をし、どのように違いmarkdown packageますか?

回答:


141

Pandoc

Pandocはドキュメントコンバータです。それは、次のような多くの他のフォーマットに異なるマークアップ形式の数へ変換することができる.doc.pdf

Pandocは、GUIのない​​コマンドラインツールです。これは、Rとは別の独立したソフトウェアです。ただし、rmarkdownドキュメントの変換に依存しているため、RStudioにバンドルされています。

Pandocは、ドキュメントを変換するだけでなく、基本のマークダウン言語に機能を追加して、より複雑な出力をサポートできるようにします。

Rマークダウン

Rマークダウンはマークダウンに基づいています:

マークダウン(マークアップ言語)

Markdownは、HTMLや他の多くの形式に変換できるように設計されたプレーンテキスト形式の構文を備えた軽量マークアップ言語です。マークダウンファイルは、通常拡張子が付けられたプレーンテキストファイルです.md

HTMLやLaTeXのような他のマークアップ言語と同様に、Rから完全に独立しています。

明確に定義されたMarkdown標準はありません。これにより、さまざまなベンダーが独自の言語バリアントを作成して欠陥を修正したり、不足している機能を追加したりするため、断片化が発生しています。

マークダウン(Rパッケージ)

markdown.RmdファイルをHTMLに変換するRパッケージです。これは、の前身でありrmarkdown、はるかに多くの機能を提供します。使用は推奨されなくなりました。

Rマークダウン(マークアップ言語)

R Markdownは、マークダウン構文の拡張です。Rマークダウンファイルは、通常ファイル拡張子が.Rmd。のプレーンテキストファイルです。それらは、後で実行できる方法でRコードを埋め込むことができるマークダウン構文の拡張を使用して記述されています。

それらはrmarkdownパッケージによって処理されることが期待されているため、Rマークダウンファイルの一部としてPandocマークダウン構文を使用することができます。これは、生のHTML / Latexやテーブルなどの追加機能を提供する元のマークダウン構文の拡張です。

Rマークダウン(パッケージ)

Rパッケージrmarkdownは、.Rmdファイルを処理してさまざまな形式に変換するライブラリです。

コア機能はあるrmarkdown::renderどのpandocの肩の上に立っています。この関数は、pandocを使用して、入力ファイルを指定された出力形式にレンダリングします。入力に編み物が必要な場合は、knitr::knitpandocの前に呼び出されます。

RMarkdownパッケージの目的は、Pandocオプションをカスタマイズするための適度に優れたデフォルトとRフレンドリーなインターフェースを提供することです

RMarkdownファイルの上部に表示されるYAMLメタデータは、具体的にはrmarkdown::render、ビルドプロセスをガイドするために、にオプションを渡すためのものです。

RMarkdownはマークダウン構文のみを扱うことに注意してください。変換したい場合.Rhtml.Rnwファイルを、あなたはに組み込まれた便利な機能を使用する必要がありますKnitrなど、knitr::knit2htmlおよびknitr:knit2pdf

ニット

Knitrは、コードが埋め込まれたプレーンテキストドキュメントを取得し、コードを実行して、結果をドキュメントに「編み込み」ます。

たとえば、それは変換します

コア関数はでknitr::knitあり、デフォルトでは、これは入力ドキュメントを見て、それがどのタイプであるかを推測しようとします-Rnw、Rmdなど。

このコア関数は、次の3つの役割を実行します。-入力ドキュメントを調べ、ユーザーが評価するコードである部分を検出するソースパーサー。-このコードを評価するコードエバリュエーター-評価結果を生の出力タイプで解釈可能な形式でドキュメントに書き戻す出力レンダラー。たとえば、入力ファイルが、の.Rmd場合、出力レンダリングはコード評価の出力を.mdフォーマットでマークアップします。

ドキュメント形式間の変換

Knitrはないない文書フォーマット間の変換-そのような変換のよう.md.html。ただし、他のライブラリを使用してこれを行うのに役立ついくつかの便利な関数を提供します。 パッケージを使用rmarkdownしている場合は、に置き換えられているため、この機能は無視してくださいrmarkdown::render

例はknitr:knit2pdf次のとおりです。'入力RnwまたはRrstドキュメントを編成し、texi2pdfまたはrst2pdfを使用してPDFにコンパイルします。

潜在的な混乱の原因はknitr::knit2html「入力マークダウンソースを編成しmarkdown::markdownToHTML、結果をHTMLに変換するために呼び出す便利な関数です」です。markdownパッケージがパッケージに取って代わられた ため、これはレガシー機能になりましたrmarkdownこのメモを参照してください

ブックダウン

ブックダウンパッケージはRMarkdownの上に構築されており、Markdown構文の単純さ、および複数のタイプの出力形式(PDF / HTML / Word /…)の可能性を継承しています。

複数ページのHTML出力、図/表/セクション/方程式の番号付けと相互参照、パーツ/付録の挿入、GitBookスタイル(https://www.gitbook.com)のインポートなどの機能を提供して、エレガントで魅力的なHTMLを作成します。本のページ。


2
これは非常に紛らわしいので、ここで最善を尽くしました。何か問題がある場合は、編集するか、別の回答を追加してください...
RobinL 2016年

6
私が混乱していると思う1つの側面は、ツールチェーンの各ステップに渡されるパラメーターのドキュメントです。インタラクティブなヘルプ(オートコンプリートなど)はほとんどなく、yamlヘッダーで、またはknitr_opts(私は常にそれが何と呼ばれるかを忘れています)、カスタムpandoc引数、追加のyamファイル、またはカスタムを介して、どのパラメーターを呼び出す必要があるかを推測する必要がありますpandocテンプレート...特にLaTeXをチェーンに追加すると、少しジャングルを感じることがあります。
baptiste 2016年

3
@baptiste私は完全に同意します。そしてこれが、私が裸のLaTeXを使用したRNWドキュメントを好む理由です。中間pandocステップがなく、魔法が少なく、混乱が少ない。確かに急なLaTeXの学習曲線です。私の意見では、Rmarkdownは、単純なデフォルトのものに満足しているときに最適です。しかし、微調整する必要があるとすぐに、複雑さが急速に高まります。
CL。

3
これは私がこれらすべてについて見つけた最良の説明です。初心者だけでなく、私のようにRとラテックスを別々に使用した長年の経験がある人にとっても非常に混乱します。素晴らしい投稿。
StatsStudent

2
@StatsStudent以前のバージョンのrstudiormarkdownチートシートには、rmarkdownからの出力を作成するさまざまな手順を理解するのに非常に役立つ図があったと思います。おそらく、ここでの答えは図でできるでしょうか?
マークニール
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.