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に移動のコマンドがバインドされています。また、ヘッダーも固定されているので、ヘッダーとデータの対応が非常にわかりやすくなります。
ess-R-data-view
では、データフレームとマトリックスでこのような表が表示されるようになっています。ベクトルなど対応していないデータの場合、次のようなエラーメッセージがポップアップします。
M-x ess-R-dv-ctable
の代わりに M-x ess-R-dv-pprint
を実行すると次ようなバッファがポップアップします。
このバッファにはボーダーもありませんし、ヘッダも固定されていませんが、データが多いときに軽快に動作するので重宝するのではないかと思います。データの大きさ次第でこちらを選択すると良いかと思います。
この機能を使いはじめると頻繁に使うことになるかもしれません。そうなるといちいちミニバッファにコマンドを入力するのが面倒くさくなってきます。自分のところでは、次のような感じでキーバインドさせて使ってます。
(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については、また別の機会にちゃんと書こうと思います。
-
前の記事
Google Reader代替はEmacsなのではないでしょうか 2013.03.21
-
次の記事
Org-modeとGoogle calendar間で予定をやりとりするorg-gcal.elというのを作りました 2014.03.14