つくりました。
ページ: Home • All Your Figure Are Belong To Us
レポジトリ: yutannihilation/allYourFigureAreBelongToUs · GitHub
今のところこんな感じです。
動機
ggplot2を補完するパッケージが色々ありますが、それでどんなグラフが描けるのか知るためには、いちいちインストールしてexample()
を
実行しないとわかりません(ドキュメントがしっかりしてるやつもありますけど)。
めんどくさいです。
みんなが同じグラフを見るために、同じコマンドをわざわざコピペして実行しないといけません。RがReproducibilityに優れているのを見せつけるのはいいですけど、 そんなreproduceしまくる必要あるんっすか??
みたいな。
私くらいの怠け者になると、その努力をショートカットしたい!と考えるようになります。そんな思いでつくったやつです。
やってること
簡単にメモっておきます。やってることは単純です。
Github Pageは、Jekyllという、Markdownを投げつけるといい感じのウェブサイトに変貌させてくれるやつを使えます。ということで、
- Rのドキュメントの
Example
のセクションだけ抜き出してRmarkdownファイルを生成 - Rmarkdownをknitしてmarkdownファイルを生成
という流れでできたmakrdownファイルを所定のディレクトリに入れてやればJekyllがHTMLを吐き出してくれます。
ちなみに、以前やったように、基本的にはyihuiさんのservr::jekyll()
を使おうと思ってました。が、なぜか一部のページがうまくknitできなかったので
(暗黙的につくchunkオプションの違いとかだと思います)仕方なく、いにしえの魔術・Makefileを書きました。
Makefile
といってもMakefileの書き方さっぱりわかりません。↓のサイトとドキュメントを見つつ、おそるおそる書いてみたものです。
Makefileには依存関係を記述できて、うまくやればいい感じのビルドの仕組みができます。このレポジトリでは、
make generate
: Rmarkdownファイルを生成make knit
: Rmarkdownをknitmake build
: JekyllでHTMLをビルドmake
:make knit
とmake build
を実行make push
: 生成されたページをGithubにpush
で、それぞれのコマンドは対応するlittlerスクリプトを呼ぶようになっています。
ちなみに、対象になるパッケージはpackages.txt
に列挙してあります。対象を増やしたいときはここに書き加えて、make generate
→make
→ make push
すれば大丈夫です
generateRmd.r
Rのドキュメントはtools::Rd_db()
でパッケージ名を指定すると、そのパッケージが持っているドキュメントの一覧が取れます。そのドキュメントファイル(.Rd
)にtools::Rd2ex()
というコマンドを使うと、Examplesのセクションだけを抜き出せます。これを元にRmarkdownファイルを生成しています。
generateCategory.r
これは、Jekyll標準ではカテゴリーごとのページを生成してくれないので(プラグインとか使えばできる、けど)、自力で生成するためのページです。
一つ注意点は、Jekyllはカテゴリを勝手に小文字にしてしまうのでtolower()
を噛ますなりしておかないといけない、という点です。たとえばGGally
は大文字ですが、カテゴリ名は問答無用でggally
になってしまいます。
knit.r
allYourFigureAreBelongToUs/knit.r at gh-pages · yutannihilation/allYourFigureAreBelongToUs · GitHub
これはjekyll-knitrのbuild.Rを参考にしています。