Rのデータビューワ ess-R-data-view.elというのを作りました


Rを使っているとオブジェクトの中に入っているデータを確認したり眺めたりしたいと思うことが頻繁にあります。

こういった欲求を満たすためにess-R-object-popup.elというものを以前作ったのですが、これはあくまでオブジェクトのサマリーをチラ見することが目的であって、中身を細かく確認するものではありませんでした。 統計量を見るだけでもデータの特徴をある程度把握することはできるのですが、やはり生のデータを目視するのにはかないません。

生データを目視したいという需要は少なからずあるようで、RStudioでもデータビューワがあります。一方のEmacsですが、ESSにはオブジェクトを俯瞰できるrdiredというものがあるものの生のデータを眺める機能はなくて、Rのインタラクティブシェルでズラズラ出力しては眺めるという程度くらいしかできませんでした。まあこれでも良いんですがテキストが整形されているだけですし、どんどん流れていってしまうので、操作性も良くありません。

というわけで、こういった不満を解消すべくデータビューワを作ってみました。ess-R-data-view.elといいます。

インストール

本体はGitHubに置いてます。

myuhe/ess-R-data-view.el · GitHub

いろいろと依存しているのでEmacs24以降であれば、package.elを使ってインストールするのをおすすめします。MELPAに登録してもらってますので、次のような感じでpackage-archivesにMELPAを登録しておけば、、、

(add-to-list 'package-archives
  '("melpa" . "http://melpa.milkbox.net/packages/") t)

(package-initialize)

M-x list-packages などとして ess-R-data-view を選べばサクッとインストールできると思います。

使い方

M-x R としてRのインタラクティブシェルを起動させます。この状態でデータ名の上にキャレットを置いた状態で M-x ess-R-dv-ctable を実行します。

例えば、バンドルされているデータセット、irisでこのような操作をすると、次のようなバッファがポップアップしてくるかと思います。このバッファの中ではおなじみのn,p,f,b またはj,k,h,lに移動のコマンドがバインドされています。また、ヘッダーも固定されているので、ヘッダーとデータの対応が非常にわかりやすくなります。

https://raw.github.com/myuhe/ess-R-data-view.el/master/image/ctable.png

ess-R-data-view では、データフレームとマトリックスでこのような表が表示されるようになっています。ベクトルなど対応していないデータの場合、次のようなエラーメッセージがポップアップします。

https://raw.github.com/myuhe/ess-R-data-view.el/master/image/popup.png

M-x ess-R-dv-ctable の代わりに M-x ess-R-dv-pprint を実行すると次ようなバッファがポップアップします。

https://raw.github.com/myuhe/ess-R-data-view.el/master/image/pprint.png

このバッファにはボーダーもありませんし、ヘッダも固定されていませんが、データが多いときに軽快に動作するので重宝するのではないかと思います。データの大きさ次第でこちらを選択すると良いかと思います。

この機能を使いはじめると頻繁に使うことになるかもしれません。そうなるといちいちミニバッファにコマンドを入力するのが面倒くさくなってきます。自分のところでは、次のような感じでキーバインドさせて使ってます。

(define-key ess-mode-map (kbd "C-c v") 'ess-R-dv-ctable)
(define-key ess-mode-map (kbd "C-c V") 'ess-R-dv-pprint)

これからの予定

データフレームとマトリックスにしか対応していないので、他のデータをどうしようかと少し考えていました。特にリストとか配列あたりはhelmインターフェイスで掘っていって最後はess-R-data-viewで表示させたりすると素敵そうです。 とは言うもの現状でかなり満足してしまったというのと、そもそもRをめっきり使わなくなってしまったので、恐らくこれ以上機能を追加することはないと思います。

ctableはすごいということを言いたかった

今回のess-R-data-view.elを作りはじめたのは、実はctable.elを使って何か作ってみたかったというのがとても大きい理由だったりします。 実際、使ってみてかなり素敵なライブラリでした。ctable.elについては、また別の機会にちゃんと書こうと思います。

  • Pingback: Gnupack の Emacs に ESS | miyazakikenji()

  • ST

    This is fantastic–thanks for providing this! There’s been no other alternative for ESS/OSX until I came across your viewer package.

    One thing I noticed though, I often import data by read.table(x,check.names=FALSE) and for a data frame with unconventional names–like “variablename[i]” or “variablename(i)”–I get the error, “Args out of range” and shows no table. I’ve looked through your code which is quite short, but not sure if the error comes from the emacs side or R side. I wonder if you could suggest a possible workaround? Many thanks!

  • Pingback: Emacs で R 言語を利用するための設定メモ (ESS) | Futurismo()