[解決済み] R Markdown、Knitr、Pandoc、およびBookdownの関係
質問
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::knit2html
と
knitr:knit2pdf
ニットー
Knitrはコードが埋め込まれたプレーンテキスト文書を受け取り、コードを実行し、結果を文書に「編む」ように返します。
例えば
-
を
R Markdown (
.Rmd
) ファイルを標準的なマークダウン・ファイル (.md
) -
某
.Rnw
(織物) ファイルを.tex
形式に変換します。 -
An
.Rhtml
ファイルをhtmlに変換します。
コア機能は
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ブックページを作成することができます。
関連
-
R: 環境と変数のスコープ問題
-
[解決策】 plot.new() のエラー:図の余白が大きすぎる。
-
[解決済み] HTML、PDF、DOCXで見栄えのするシンプルな手動のRMarkdownテーブル
-
[解決済み] 関数のソースコードを見るにはどうしたらいいですか?
-
[解決済み] ベクトル中のxの値を持つ要素の個数を数える
-
[解決済み] Rでtrycatchの書き方
-
[解決済み] なぜ `[`] は `subset` よりも優れているのですか?
-
[解決済み】R関数でオプション引数を指定する "正しい "方法
-
[解決済み】私のggplot2構文が賢明であるときに、R CMDチェック「no visible binding for global variable」注記を処理するにはどうすればよいですか?
-
[解決済み] 2つのRMarkdown (.Rmd)ファイルを1つの出力に結合する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
R - よくあるエラーとその原因 - 注意事項
-
[解決済み] Rで文字列から文字を削除する
-
[解決済み] R および RStudio のコンソールをクリアする関数
-
[解決済み] グループ化関数(tapply、by、aggregate)と*applyファミリ
-
[解決済み] ベクトル中のxの値を持つ要素の個数を数える
-
[解決済み] ベクトル中のある要素のインデックスを求めるR関数はありますか?
-
[解決済み] Rでオブジェクト(変数)が定義されているかどうかを確認するには?
-
[解決済み】安定したマッピングを持つggplot2のカテゴリ変数に色を割り当てるには?
-
[解決済み】自作関数を書くときにRの省略機能を使うには?
-
[解決済み】Rスクリプトで警告をグローバルに抑制する方法