1. ホーム
  2. r

[解決済み] R Markdown、Knitr、Pandoc、およびBookdownの関係

2022-10-06 07:58:52

質問

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

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

どのように解決するのですか?

パンドック

Pandocは文書変換ツールです。多くの異なるマークアップ形式から、以下のような他の多くの形式に変換することができます。 .doc , .pdf など。

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

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

Rマークダウン

R Markdownはmarkdownをベースにしています。

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

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

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

明確に定義されたMarkdownの標準は存在しません。これは、さまざまなベンダーが欠陥を修正したり、欠けている機能を追加するために、この言語の独自の変種を書くことによる断片化につながっています。

Markdown (Rパッケージ)

markdown を変換する R パッケージです。 .Rmd ファイルをHTMLに変換するRパッケージです。 前身は rmarkdown の前身で、より多くの機能を提供しています。 もはや使用することは推奨されません。

R Markdown (マークアップ言語)

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

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

R Markdown (パッケージ)

Rのパッケージ rmarkdown を処理し、変換するライブラリです。 .Rmd ファイルを処理し、様々な形式に変換するライブラリです。

コアとなる機能は rmarkdown::render であり、これは は pandoc の肩の上に立っています。 . この機能は は、「pandoc を使って入力ファイルを指定された出力フォーマットにレンダリングします。もし入力が編み込みを必要とするならば knitr::knit が呼び出されます。

RMarkdownパッケージの目的は、単純に を提供し、PandocオプションをカスタマイズするためのRフレンドリーなインターフェイスを提供することです。 .

RMarkdownファイルの先頭で見られるYAMLメタデータは、特にオプションを rmarkdown::render にオプションを渡し、ビルドプロセスをガイドするためです。

RMarkdownはマークダウンの構文のみを扱うことに注意してください。 もしあなたが .Rhtml または .Rnw ファイルを作成する際には、以下のように Knitr のような knitr::knit2htmlknitr: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 パッケージに取って代わられました。 参照 このノート .

ブックダウン

bookdownパッケージはR Markdownの上に構築されており、Markdown構文のシンプルさと、複数の種類の出力フォーマット(PDF/HTML/Word/...)の可能性を受け継いでいます。

複数ページのHTML出力、図/表/節/式の番号付けと相互参照、パート/付録の挿入、GitBookスタイルのインポートなどの機能を提供します( https://www.gitbook.com )を取り込んで、エレガントで魅力的なHTMLブックページを作成することができます。