シリーズ Useful R 9 「ドキュメント・プレゼンテーション生成」(共立出版)のサポートページです。
シリーズ Useful R / 共立出版サイト / Amazon
データの分析に携わる全ての人にとって、分析結果を他人に見せるためのレポート(ドキュメントやプレゼンテーション)の作成は悩みの種です。 レポート作成時のコピペ作業に辟易としている人も多いでしょう。
本書はRにより「素早く、簡単に、間違いのない」レポートを作成するノウハウが満載の書籍です。
現在Rではknitrを中心にドキュメントやプレゼンテーションを作成するツールが急速に整備されつつあります。 knitrはRによる分析結果を使って自動的にレポートを生成するためツールです。 本書によりknitrの基本的な使い方とカスタマイズ方法を習得し、Rを使って効率的にレポートを作成できるようになります。
この他に、ウェブスライドやJavaScript可視化ライブラリなどをRから利用するためのウェブビジュアライゼーション技術(googleVis・rCharts・slidify)、インタラクティブなレポートを作成できるウェブアプリケーション(shiny)、各種プレゼンテーション手法(3次元グラフ、アニメーション、表)、Rstudioを使ったレポート生成など、Rによるレポートの作成に関わる周辺技術の解説もあわせて掲載しています。 これらの周辺技術を学ぶことで、Rを使ってインパクトのあるレポートを作成することができるようになります。
Rによるレポート生成を取り巻く環境は日々進化しています。サポートサイトでは本書ではカバーしきれなかった点、大幅な変更点など随時お知らせします。
また質問などは コメント欄、takahashi.kohske@gmail.com までメール、またはTwitter @kohske までお気軽にどうぞ(回答の保証はできませんが・・・)。 有益そうな質問については、ご了承頂ければFAQに掲載させてもらう予定です。
knit2html()を使った時に、含まれる日本語文字によっては上手く動作しません(Thanks to @habari2011dunia 様)。この問題を回避するには、本書4.5節「Pandocによるレポートフォーマットの変換」で紹介している方法を用いるか、rmarkdownパッケージ(解説ページ)を用いて下さい。2014/9/6 上記問題は解決されました。最新版のmarkdownパッケージをgithubからインストールして下さい。
install.packages("devtools") # 必要なら
devtools::install_github("rstudio/markdown")2015年4月6日にknitr 1.10がCRAN上でリリースされました。主な変更点は次の通りです。
cache.rebuildが追加されました。TRUEにするとキャッシュを破棄してコードを再評価します。stata言語エンジン、lein言語エンジン(Clojure用)が追加されました。sas言語エンジンが改善されました。kableによるマークダウンテーブル生成でワイドキャラクタを上手く扱えるようになりました。Hiroaki Yutaniさん (@yutannihilation)によるバグ報告及びパッチのお陰です。グッジョブ!!```{python, option=value}の形式を受け付けるようになりました。all_labels()関数に引数...が追加されました。チャンクオプションによってラベルをフィルタできます。例えばall_labels(engine == 'Rcpp')とすれば、engine = 'Rcpp'のチャンクラベルを返します。knit_params()関数が追加されました。YAMLメタデータの情報を取得できます。options(knitr.duplicate.label = 'allow')でチャンクラベルの重複がOKになります。ラベルが重複してる場合、foo-2みたいな感じでsuffixがつけられます。2015年1月20日にknitr 1.9がCRAN上でリリースされました。主な変更点は次の通りです。
load_cache()関数が追加されました。後ろの方のチャンクの内容を先頭の方(アブストラクトとか)で参照したい時などに使うことができます。clean_cache()関数が追加されました。stanが追加されました。tikzエンジン用のconvert関数のパスを指定するためのチャンクオプションengine.optsが追加されました。またengine.optsでconvert用のオプションを渡せるようになりました。dev = 'png'の時はプロットの記録にgrDevices::png()を使うようになりました。2014年11月11日にknitr 1.8がCRAN上でリリースされました。主な変更点は次の通りです。
fig_chunk()関数が追加されました。fig_chunk(チャンクラベル, 拡張子, 番号)とすることでチャンクで出力される図のファイル名を得ることができます。ドキュメント内で図を参照したい場合、\includegraphics{\Sexpr{fig_chunk('foo', 'pdf')}}などとします。kable()にescape引数が追加されました。TRUEとすると特殊な文字をエスケープします。knit_filter()関数が追加されました。utils::aspelと組み合わせることでスペルチェックを行うことができます。使用例は?knit_filterを参照して下さい。spin_child()関数が追加されました。ドキュメント内に別のRスクリプトの処理結果を埋め込むために使うことができます。inline_expr()関数が追加されました。ドキュメント内にインラインコード例を記述したい場合、`` `r knitr::inline_expr('1+1')` ``とすると、`r 1+1`と出力されます。面倒ですね。kable()にtable.envir引数が追加されました。LaTeX出力でテーブルの環境を指定できます。stitch()用のスクリプトで# ---- label, options ----という形式のチャンクヘッダがサポートされてます。groovyが追加されました。2014年10月13日にknitr 1.7がCRAN上でリリースされました。主な変更点は次の通りです。
kable()にcol.namesオプションが追加されました。列の名前を指定できます。textが追加されました。テキストチャンク(コードチャンク以外の部分)に対して適用されます。fig.showtext: TRUEに設定するとshowtextパッケージを使うことができます。global.par: opts_knit$set(global.par = TRUE)とすると、par()によるオプション設定が次のチャンクでも有効になります。nodeが追加されました。knit()によりRの既定のoption(digits)が7から4に変更されなくなりました。fooに対して、foo-1、foo-2、...というファイル名になります。fig.show='animate'でビデオ出力する場合の既定のフォーマットがOGGからWebMに変更されました。2014年5月25日にknitr 1.6がCRAN上でリリースされました。Windows上で日本語が使いやすくなっています。 本書では公式1.5ではなくリリース前の1.6開発版をターゲットにしていたので、多くの機能については本書中で解説しています。 ここではその他の新機能を挙げておきます。
付録Bのリストに加えて以下のチャンクオプションが新たに追加されています。
collapse: TRUEならチャンクコードと評価結果を一つのブロックで出力します。(サンプルRmd / サンプルmd)
fig.retina: Retinaディスプレイ用に図の大きさを調整します。例えばfig.retina = 2でfig.width = 5、dpi = 72なら、実際の画像の幅は5*72*2で720ピクセルになります。
strip.white: TRUE (既定値)ならチャンク前後の空白行を取り除きます。
render: レンダリング関数を指定します(解説ページ)。既定値はprint(S4オブジェクトの場合はshow)です。
cache.comments: FALSEならチャンク内のコメントの更新は無視されます。
R.options: チャンク内だけで有効なRのグローバルオプション(options)を設定します。
out.width.px, out.height.px: 図のサイズをピクセル単位で取得します。読み取り専用です。
2014年6月19日にRstudio 0.98.932が公式リリースされました。レポート作成機能が大幅に向上しています。詳細は解説ページをご覧ください。
rmarkdownパッケージを採用rmarkdownパッケージについては解説ページを参考にして下さい。2015年1月17日にshiny 0.11がCRAN上でリリースされました。主要は変更点は次の通りです。
shinybootstrap2パッケージを使って下さい。bodyタグがサポートされました。observeEventとeventReactiveが追加されました。actionButtonの扱いが簡単になっています。shiny.observer.errorオプションで、reactive中のエラーの処理を指定できるようになりました。renderDataTable()関数にescape引数が追加されました。HTMLエンティティがエスケープされます。passwordInput()が追加されて、パスワード入力が可能になりました。2014年10月1日にshiny 0.10.2がCRAN上でリリースされました。主要は変更点は次の通りです。
server.R、ui.Rの中身をapp.Rというひとつのファイルにまとめられるようになりました。DataTablesのバージョンが1.10.2に上がっているので、既存のオプション設定が正しく動作しないかもしれません。fileInput()がIE8およびIE9で動作するようになりました。複数ファイルのアップロードは一部ブラウザでは利用できません。ProgressとwithProgressが追加されました。サンプル2014年7月26日にshiny 0.10.1がCRAN上でリリースされました。主要は変更点は次の通りです。
server.R、ui.RともUTF-8で保存します。textOutput(), imageOutput(), plotOutput(), htmlOutput()に引数inlineが追加されました。TRUEにすると、これらの要素がインライン要素(<span></span>)として出力されます。http://shiny.rstudio.com/gallery/inline-output.html にサンプルがあります。selectとselectizeで選択肢のグループ化が可能になりました。利用するにはchoicesにリストのリストを渡します。http://shiny.rstudio.com/gallery/option-groups-for-selectize-input.html にサンプルがあります。2014年6月14日にshiny 0.10.0がCRAN上でリリースされました。主要は変更点は次の通りです。
shinyApp()関数によりshinyAppオブジェクトを作成できます。shinyApp()にはUIとサーバ関数を渡します。shinyAppオブジェクトを評価するとアプリケーションが起動します。詳細は?shinyAppでオンラインヘルプの例を見てください。flowLayout: 子要素を左から右、上から下に配置します。splitLayout: 子要素を等間隔に水平に配置します。cellWidths引数で列幅を指定することもできます。inputPanel: flowLayoutと同じですが、領域全体の背景がグレイになります。updateSelectizeInput()関数が追加されました。詳細はshinyのサイトを参考にして下さい。actionLinkという新しい入力ポイントが追加されました。actionButtonと同じ動作ですが、通常のリンク付きテキストとして表示されます。exampleが公式のデモとして追加されました。
demo(package="rCharts")
とすると利用できるデモ一覧が表示されます。 デモを表示するには、
demo(highcharts)
などとします。
(2014/6/13)
試験的にencodingオプションがサポートされました。Windows環境で日本語を利用できるようになります。fix-encodeブランチで実装されているので、以下のようにして試してみてください。
devtools::install_github("ramnathv/slidify@fix-encode")
library(slidify)
# 例
slidify('index-CP932.Rmd', encoding='CP932') # SJISエンコードの場合
slidify('index-UTF8.Rmd', encoding='UTF8') # UTF8の場合
(2014/6/13)
随時追加予定です。質問等は takahashi.kohske@gmail.com またはTwitter @kohske までお気軽に。
knitrとPandocを利用したドキュメント作成例です(サンプルサイト)。rmarkdownパッケージを使うと、より簡単にPandocを利用できます。rmarkdownパッケージについては解説ページを参考にして下さい。rChartsの解説と利用例をRpubsに掲載しています。
stackoverflowは技術系QアンドAサイトです。英語ですが有益な情報が豊富です。
玉石混淆
随時追加予定です。
[2014/6/30] p.120のコード例(norm-dist.Rmd)内、scianimatorライブラリへのリンクが無効になっています。以下のリンクに書き換えて試して下さい (Thanks to 石田様)。
options(markdown.HTML.header=
'<link rel="stylesheet" href="https://rawgithub.com/brentertz/scianimator/master/assets/css/scianimator.css"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="https://rawgithub.com/brentertz/scianimator/master/assets/js/jquery.scianimator.min.js"></script>'
)本書で扱ったRマークダウンファイルやRスクリプトなどです。
Enjoy!!
質問など、ご自由にどうぞ。
blog comments powered by Disqus
コンタクトは takahashi.kohske@gmail.com またはTwitter @kohskeまで。本業はこちら。