二ヶ月更新してませんでした、すみません。
2016/04/30に開催されたTokyo.Rにて、「R Markdownのちょいネタ集」というタイトルでLTをしてきました。ただ5分間に色々と詰め込みすぎてまともな内容を話してなかったので、ここでそのフォローをしたいと思います。プレゼン資料とかは、以下のリンク先(github)においてます:
– Tokyo.R #53 LT「R Markdownのちょいネタ集」
各ネタについて
タブ機能について
rmarkdown v0.9.5から、htmlドキュメント内にタブを組み込めるようになりました。
このタブ機能のベースはbootstrapの機能で、元々rmarkdownにはbootstrapが組み込まれていました。なのでhtmlタグを利用すれば実装可能だったのですが、今回の実装でhtmlタグなしで簡単に使えるようになりました。
ただ自分が実装してみて3ヶ月後に本家が実装してくるとは思いもしなかったので、涙を流しつつも方向性があってたことに喜びました。
タブ機能を実装するには各ブロックにクラスを付与する必要があるのですが、クラス付与はPandoc Markdownの機能で行い、タブ部分についてはjavascriptで自動生成するようにしているみたいです。なおタブ部分に日本語を利用する際には、冒頭のyamlにmd_extentions: -ascii_identifiers
を追加するようにしてください。でないと多分コケます。てかRmd全般で、見出し要素に日本語を使うなら多分これいれといた方がいいでしょう。
フローティングTOCについて
これもタブ機能と同様、rmarkdown v0.9.5で実装されました。TOC自体はPandoc Markdownの機能で以前から利用可能でしたが、このフローティングについてはbootstrapの機能です。注意事項はタブ機能と同一ですので省略します。
新規Rmdファイル作成関数について
私の使い勝手のために作成しました。なので今のところ個人利用パッケージにおいてます。自分の気の赴くままに編集・更新します。
自分で言うのもアレですが、この関数のポイントは引数です。私がよくyamlで設定する(いじる)項目について設定できるようにしてます。あと対応するoutput formatもかなり揃えてます。そのうち実装する予定の機能としては、複数ファイルの同時作成とかです。あと多分、もうちょっと使える関数を作ったらちゃんとしたパッケージに移行すると思います。生きてれば。
RmdでWebサイト作成
今回のメインその1です。実は以前からRmdでWebサイトを作成する方法はあって、その方法も公開されていました。ただそのやり方がちょっと面倒で、buildもしづらいというのがありました。
今回RStudioのプレビュー版でProject Option…のbuild toolsで、Websiteというのが追加され、まとめてbuildができるようになりました。サイトに関する設定などは_site.ymlに記述することで色々設定できます。なお、これらをちゃんと読み込んでbuildするためにはgithub版のrmarkdownが必要です。
ここで生成されるサイトのベースデザインはやはりbootstrapです。なのでthemeにbootstrapのテーマを設定すれば各種テーマをあてることができます。またオリジナルのcssフレームワークも設定可能です…が、おそらく相当な検証が必要になるかと思います。特にメニュー周りが。
rmarkdown(RStudio)本家が、このあたりの開発に力を入れているのは間違いなく、多分他の言語との差別化としても有力だと思うんで、きっと今後もこの辺りの機能は強化されるだろうと私は思います。がんばって日本語ドキュメント整備します。
ダッシュボード作りたいについて
今回のメインその2。これはflexdashboardパッケージを利用しています。最大のポイントはRmdファイルひとつだけで完結するところです。
同パッケージをインストールすると、Rmdを新規で作成するときにTempleteに準備されるようになります。まずはこれをそのままknitして確認するといいと思います。
おそらく、これとR Markdownのparameter機能を組み合わせると、恐ろしく有用なコンテンツが作成できるようになります。ダッシュボードはいわゆるレポートなので、例えばある対象に関するレポートをダッシュボードで作ります。ここで対象リストを準備し、それをR Markdownのparamで指定してしまえば…。
発表で一番反応があったのはやはりこのダッシュボードで、わかってくれる方はこれの凄さに共感してもらえたので満足です。
その他雑感
みなさんLTのトークレベルが高すぎてネタほとんど仕込まなかった自分が辛かったです。あと盛り込みすぎました。
Enjoy!
what_alnk
rmarkdown