未完放流

終わりなど無い、有るのは試練だけだ……

R Notebooks:RStudio でJupyter like な環境を

f:id:idwonder21:20170404002254p:plain

昨年11月にようやくv1.0となったRStudioですが、 その中の目玉機能にR Notebooks というものがあるのを知りました。

Jupyterを使っていて足らないと感じたもの、knitrの残念だったものを補ってくれています。

rmarkdown.rstudio.com

見た目はJupyterに似ていますが、こちらは別記事 *1 で書いたknitr の拡張でrmarkdownに書き込むスタイルです。markdownがベースになったお陰でgitなどでdiffが見やすくなります。

Chunk ごとの処理が可能に

Chunk とはrmarkdownに埋め込むcodeの塊です。JupyterのCodeを書き込んだCellと対応すると考えても良いと思います。

knitrではChunkの結果を見るにはファイル丸ごと処理する必要がありましたが、個別に試すことができるようになったのはかなり嬉しい進歩です。

plotなどもmarkdown中でも表示できるようになりました。

View ペインではコードを保存する度にレンダリングが行われます。

R以外の言語も使え、同一ファイル内でも切り替えも可能

Chunkに使用できる言語は、 Bash*2, Python, Rcpp, SQL, Stanが使えます。 *3 また同一ファイル中のchunkごとに言語を変えることができるので、Bashを使いながら処理をしたいという場面は多いのではないでしょうか?

R markdown + shiny でインタラクティブなプロットが可能

こちらは R Notebooks とは独立したものだと思うのですが、ほぼ同じ使い勝手でWidgetsを作ることができます。

JupyterのWidgetsは標準ではスライドバーなどで値の変更に対しインタラクティブなプロットできませんでしたが *4、 こちらはファイル中でshinyをruntimeに指定すれば可能です。

言語の連携とwidgetを組み合わせられるのを想像しただけでワクワクします。

rmarkdown.rstudio.com

Desktop版は起動時に認証がいらない

Jupyterはweb browserでアクセスするためユーザー認証が必要でしたが、こちらはデスクトップアプリのため必要ありません *5。 個人での使用には、こちらの方が便利です。

難点は日本語入力か

現在のRStudio (1.0.136)はLinux版、Windows版それぞれに日本語入力にやや難があります。 そのため日本語の長文が必要、報告書にコードを埋め込むような使い方には作業効率が落ちます。

Ubuntu 14.04ではシステムにインストールされているQtが古く、fcitxをQt 5.4.1バージョンを上げてビルドし直す必要があります。

Windows版も筆者の環境ではIMEが無効になる場合がり、ctfmonというコマンドを呼び出し有効化する必要があります。またIME入力候補が右下の隅に現れ快適とはいえません。

vim キーバインドを使用している場合、IMEの状態と入力モードの切り替えの制御が煩わしい挙動をすることがあります。

RStudio Server を立ち上げにアクセスするという案も考えられますが、こちらも別の理由で長文が難しかったです。

Windows からEdge, Chromeを用いてアクセスしたところ。 Edgeは入力位置に対し入力候補窓がずれがみられた。 Chromeは単語が2度入力されるような不具合がみられた。

Jupyter ではインライン入力の際 chromeの方が候補ウィンドウの位置が若干悪いのが気になりましたが、作業効率を著しく低下させるとは言えません。 Edgeはズレは全く発生しませんでした。

結論

Jupyterで足りないと思っていたものがありますが、レポートなど長文を書く際に日本語入力が弱いのが気になります(macは未確認)。 外部エディタが設定できるとうれしいのですが、いまのところそういう機能はないようです。

確認した環境

RStudioは最新版を使用している。Windows側で当初Microsoft R Open (3.3.1, 3.3.2)を使ったが一部のパッケージのバージョンが古くR Notebooksの機能が使えなかった。

Linux

Windows

*1:idwonder21.hatenablog.com

*2:Linuxで確認、Windows版には当然ながら無い

*3:使用できる言語に関する公式サイトのマニュアル:rmarkdown.rstudio.com

*4:idwonder21.hatenablog.com

*5:こんなプロジェクトもあるnteract.io