Rの良いとこ,悪いとこ

最近,bioinformatics系の解析ではR(http://www.r-project.org)が使われることが多くなっています.書籍も充実してきています(正直,帯に短しタスキに長しな感じの書籍が多い気もするが,成熟の過程では仕方がないだろう).でも,私はRが好きになれなくて,人に勧めるのをためらってしまいます.授業の資料作成がてら,あらためてRの良い点,悪い点をまとめてみます.

  • 良い点
    • S言語もどきのR言語で数値の操作ができる(GUIを用いる必要はない)
    • 数多くの統計関数が定義されていて,簡単に使える
    • パッケージで様々な拡張ができるようになっている(CRANが充実してきている)
    • 図に表示するのが容易
    • 定義した行列の名前で,値にアクセスできる,(table$column な感じで)
    • 引数の順番が重要でないケースがあり,人によっては,とっつきやすいかもしれない
  • 悪い点
    • S-Plusほどは,GUIが充実していない
    • 行列の扱いがイマイチ簡単ではない(MatLabなどを知っていると,特にややこしく感じるだろう.全てをC言語でやるよりは,遥かに簡単だけど)
    • "R"という名称は,検索エンジンでひっかかりにくい ^^;
    • 言語として使いにくい

Rが非常に便利なのは,確かなのですが,最後の「言語としてつかいにくい」という私の主観がネックで,やはり恒常的に使いたいとは思えませんでした.
具体的には,メソッドチェインが使いたい(メソッドの連続でデータ処理を行う)とか,関数一つにクラスが1個できてしまっている感じなので,いちいち何が使えるのか調べないといけない(これは,統計関数によって返すものが違うので仕方ないという事もありますが),行列の各要素に対しての作用素(apply系)が使いにくい,言語そのものがBASICの様な感じで前時代的で楽しくない,結果として,少し大きなプログラムは書きにくそう,など.

個人的な意向としては,Rubyなら,Rを凌駕するものを作りやすいかなぁと思っています.まず,データそのものはRubyのActiveRecordsの様に,データを読み込むと,その形式に従って動的にデータアクセス用メソッドが追加されるようにする.あとは,統計メソッドを用意して,メソッドチェインで,連鎖的な解析を出来るようにする.to_pvalue とかで pvalueを取りだしたりできるようにする.irb(というより,bioruby shell)を利用できるようにすれば,R相当のCUIは実装可能かな.

もし,Rubyで実装するとした場合の問題点は,

  • グラフィックスを扱う,標準的なライブラリがない(これが布教には致命的)
  • 計算が全般的に遅いので,計算を速くする工夫(C言語部分を多くするなど)が必要.