ほくそ笑む

R言語と統計解析について

Japan.R で LT 大賞もらった件

去る 12月 5日、日本最大級の R の祭典である Japan.R で LT 発表を行い、一番面白かった LT 賞をいただきました。

LT の内容については非公開ですので、発表中の Twitter タイムラインの様子から雰囲気だけ感じ取っていただければと思います。



また、今回の Japan.R では、匿名知的集団ホクソエムのみなさんも大活躍してくれました。

主催の gepuro さん、副主催の wonder_zone さん、運営のみなさん(yutannihilation, u_ribo, kyyonko, basildon3843, rep0ooo)、発表者のみなさん、お疲れ様でした。
楽しいイベントをありがとうございました!

本題

とまあ、ここで終わらないのがアドベントカレンダーです。

本記事は R Advent Calendar 2015 8 日目の記事です。

ただのイケメンとして知られる gepuro さんですが、

最近、gepuro task veiws というイケてるサイトを作ってくれました。

このサイトは、GitHub 上で開発されている R パッケージを収集し、リスト化してくれるサイトです。

GitHub 上で開発されている R パッケージのリストが得られて何がうれしいの?と思う方もいるかもしれませんので、少し説明しましょう。


神 Hadley の作りし devtools パッケージによって、今や R パッケージ開発の主戦場は GitHub です。

GitHub 上には CRAN に上がっていない便利パッケージがたくさんあります。

最近までその代表格だったのが、ggfortify というパッケージです。

このパッケージは、様々な R オブジェクトを ggplot2 でいい感じに描画してくれる便利パッケージで、私もよく使っています。

しかし、このパッケージは GitHub 上にしかなかったため、次のようにしてインストールする必要がありました。*1

devtools::install_github("sinhrks/ggfortify")

特にこの sinhrks というユーザ名が覚えられなくて、毎回ググるのが面倒でした。

CRAN にあれば install.packages("ggfortify") と、パッケージ名だけでインストールできますが、GitHub ではそうはいきません。

GitHub 上にあるパッケージも、パッケージ名だけでインストールできたらいいのに。


というわけで、作っちゃいました。

GitHub 上のパッケージをパッケージ名だけでインストールできるようにするパッケージです。

これを使えば、次のようにパッケージ名だけで GitHub 上の R パッケージをインストールすることができます。

library(githubinstall)
install_github_package("ggfortify")

内部では、gepuro task views で収集された GitHub 上の R パッケージリストから、該当するパッケージ名を検索して、devtools でインストールしているだけです。

インストール方法は、下記のように行います。

install.packages("devtools")
devtools::install_github("hoxo-m/githubinstall")

例えば、最近 Hadley が開発を始めた、まだ CRAN に上がっていない multidplyr パッケージも、次のようにしてインストールできます。

library(githubinstall)
install_github_package("multidplyr")

また、ユーザ名を指定して、そのユーザが作ったパッケージの一覧を表示することもできます。

list_github_packages("hadley")
 [1] "hadley/assertthat"    "hadley/babynames"     "hadley/bigrquery"     "hadley/bookdown"     
 [5] "hadley/clusterfly"    "hadley/decumar"       "hadley/devtools"      "hadley/dplyr"        
 [9] "hadley/evaluate"      "hadley/ggplot2"       "hadley/haven"         "hadley/helpr"        
[13] "hadley/httr"          "hadley/lazyeval"      "hadley/lubridate"     "hadley/meifly"       
[17] "hadley/mturkr"        "hadley/multidplyr"    "hadley/nycflights13"  "hadley/plyr"         
[21] "hadley/profr"         "hadley/pryr"          "hadley/purrr"         "hadley/rappdirs"     
[25] "hadley/readr"         "hadley/reshape"       "hadley/roxygen3"      "hadley/rsmith"       
[29] "hadley/rvest"         "hadley/secure"        "hadley/shinySignals"  "hadley/sin

(このリストを使えば、Hadley の作ったパッケージを全部インストールすることもできますね)

リポジトリ名を曖昧にしか覚えていなかった場合、適当にいれた文字列から推測してくれる関数もあります。

guess_github_repository("muldplyr")
guess_github_repository("fortify")
guess_github_repository("foreach")
[1] "hadley/multidplyr"
[1] "sinhrks/ggfortify"
[1] "hoxo-m/pforeach"

ユーザ名を忘れたなんてときも、同じように推測してくれる関数を用意しています。

guess_github_username("hadly")
guess_github_username("sinhrkt")
guess_github_username("hoxom")
guess_github_username("rich-inoue")
[1] "hadley"
[1] "sinhrks"
[1] "hoxo-m"
[1] "rich-iannone"

このように、gepuro task views にあるパッケージリストを利用すれば、これまで不便だったパッケージインストールまわりについて、色々と便利な機能を提供することができるようになります。

このパッケージで作った関数は、単なる例に過ぎません。

みなさんのアイデアを持ち寄れば、GitHub パッケージ関連をより便利にすることができると思います。

こんな機能あったらいいなというのがあれば、まずは issue にアイデアを登録してみて下さい(日本語でOK)。

Enjoy!

*1:現在は CRAN にあります