シリーズ 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まで。本業はこちら。