Rで行った統計解析や可視化を「使えるもの」にするためには、解析結果や可視化グラフをレポートとしてまとめる必要があります。 多くの場合、ワードファイルを作成して、その中に解析結果(数値・表)や可視化グラフをコピーペーストするという作業が行われていることでしょう。 ところがこの作業には次のような問題があります。
このような状況では、「動的ドキュメント生成」という手法が有効です。 動的ドキュメント生成とは、レポートのドキュメント部分とRのコードが混在したファイルを作成して、これを処理することでレポートを自動的に生成するというものです。 動的ドキュメント生成を採用する主なメリット以下の通りです。字面だけでは伝わらないかもしれませんが、実践してみればその便利さに驚かされることでしょう。
Rで動的ドキュメント生成を行うための主要なツールとしてSweave
、knitr
、そしてrmarkdown
があります。
knitr
については本誌2013年10月号で解説されています。また拙著『シリーズUseful R ドキュメント・プレゼンテーション生成』(共立出版)でも詳しく解説していますが、
その後もドキュメント生成ツールは大きく発展しています。
今回は最新の、そして著者の意見では最も便利なツールであるrmarkdown
パッケージを利用したドキュメント生成について紹介します。
rmarkdown
パッケージrmarkdown
パッケージはRStudio開発チームにより開発されています。
最新版のRStudioではドキュメント生成のためにrmarkdown
を採用しています。
今回の記事ではrmarkdown
バージョン0.3.3、及びRStudioバージョン0.98.1028を用いています。
rmarkdown
パッケージは単独でもインストールできますが、別途インストールが必要なツールなどがあり面倒です。
rmarkdown
パッケージや必要なツールが付属している最新版のRStudioのインストールをお勧めします。
http://www.rstudio.com/products/rstudio/download/ にアクセスして自分の環境に合ったインストーラをダウンロードして下さい。
また、最新版のRStudioの支援機能を使うことで動的ドキュメント生成をGUIを使って手軽に実践できます。 今回の記事ではRStudioを使ったドキュメント生成について紹介します。
rmarkdown
パッケージでは、HTMLレポートの他、PDFレポート、Microsoft WordのDOCX形式のレポート、ウェブスライドなど、様々なフォーマットに出力できます。
PDFレポートの作成にはLaTeX環境の導入が必要です(RStudioを利用する場合でも、LaTeXは別途導入する必要があります)。
LaTeX環境の導入についてはTeX Wiki (http://oku.edu.mie-u.ac.jp/~okumura/texwiki/) などを参考にして下さい。
ここでは簡単なレポート作成例を紹介します。手順は以下の通りです。
今回は次のようなRマークダウンファイルを作成しました。
---
title: "ESTRELA 11月号"
author: '@kohske'
date: "2014年9月1日"
output: html_document
---
R Markdownを使うと簡単にレポートが作成できます。
```{r, results='asis'}
knitr::kable(head(mtcars, 3))
```
図も埋め込むことができます。
```{r}
plot(cars)
```
次のようなレポートが生成されます。
図1のダイアログではDocumentタブの中で出力フォーマットを選択できます。PDFを選択した場合にはLaTeX環境が必要です。Wordを選択するとDOCX形式のレポートが作成できます。 これらの設定はRマークダウンファイルの先頭にメタ情報として記述されるので、後から変更することもできます。 GUIメニューから設定を変更するには、[Knit HTML]ボタンの右にある三角形をクリックして[Knit Word]を選択します(図3)。図4のようなDOCXファイルが作成されます。
Document以外の出力フォーマットも選択できます。Presentationはプレゼンで使うためのウェブスライドやPDFスライドを作成します。作成の手順はDocumentの場合と同じです。 ShinyはShinyウェブアプリケーションを埋め込んだドキュメントやプレゼンテーションを作成します。レポートの中でグラフなどをインタラクティブに操作することができます。
なおRStudioを使ったレポートの作成については本誌2013年10月号や『シリーズUseful R ドキュメント・プレゼンテーション生成』も参考にして下さい。但しこれらの記事では少し古い情報が掲載されています。
Rマークダウンファイルの中にはドキュメントとコードを記述します。 レポートを生成する際にはコード部分がRにより評価されて、レポートの中に結果が埋め込まれます。
ドキュメントとコードの記述方法について、誌面の都合上ここではごく簡単に説明します。 マークダウン記法やチャンクオプションなどの詳細については『シリーズUseful R ドキュメント・プレゼンテーション生成』で詳しく解説しています。
ドキュメントはマークダウン記法を用いて記述します。 マークダウン記法とは構造化された文書を手軽に記述するための書式です。主な書式は次の通りです。
# 見出し
、## 見出し
、…- ほげ
、1. ほげ
![大体テキスト](画像ファイルパス)
*斜体*
、**太字**
> 引用
$インライン数式$
、$$ 数式ブロック $$
なお、RStudioのエディタ上部にある?ボタンをクリックするとマークダウン記法のリファレンス(英語)を表示できます。
Rのコードは```{r [options]}
という行から```
という行の間に記述します。これをコードチャンクと呼びます。
チャンク開始行ではそのコードチャンクの出力、プロット画像の処理、評価の方法など、様々なオプションを指定できます。例えば、
```{r echo=FALSE}
とすると、コードチャンクのコードは表示しないで結果のみを出力します。
rmarkdown
パッケージではドキュメントのメタ情報を記述するためのYAMLヘッダが導入されました。
サンプルの先頭の---
で囲まれた部分がYAMLヘッダです。
RStudioでRマークダウンファイルを作成するとYAMLヘッダは自動的に追加されますが、この部分を編集することでタイトル、著者、作成日などに加えて、ドキュメント生成に関する設定を行うことができます。
中身はYAML記法で記述します。行頭のインデントは必須です。
次の例ではHTML出力で、目次を作成、見出しに連番を追加しています。
---
title: "HTML出力"
output:
html_document:
toc: true
number_sections: true
---
次の例ではWord出力で図の高さを3インチに指定しています。
---
title: "Word出力"
output:
word_document:
fig_height = 3
---
なお、有効なオプションは
> library(rmarkdown)
> ?html_document
> ?word_document
などとして、関数の引数を確認して下さい。
RStudioとrmarkdown
パッケージを用いた動的ドキュメント生成は手軽に導入できて非常に便利な手法です。
まずは今回のサンプルに従って試してみてください。一度使ってみるとと手放せなくなること間違いありません。
今回は誌面の都合でほんの導入部分のみ紹介しています。より詳細な使い方は、http://kohske.github.io/R/rmarkdown/ などを参考にして下さい。
次回はslidify
パッケージやRStudioのR Presentationを用いたウェブスライドの作成について紹介します。