web-dev-qa-db-ja.com

Python Rプログラミング言語のインターフェース

私はRにはかなり慣れておらず、Pythonにはかなり慣れています。私はRコードを書くのはそれほど気に入らない。 python Rへのインターフェイスを探しています。これにより、Pythonの方法でRパッケージを使用できます。

私はグーグル調査を行ったが、それを行うことができるいくつかのパッケージを見つけました

しかし、どちらが良いのか分かりませんか?貢献者が多く、より積極的に使用されているのはどれですか?

私の主な要件はRパッケージにアクセスするためのPythonの方法であることに注意してください.

48
darshan

@lgautierが指摘したように、すでに この問題に関する別の回答 があります。最初にPythonを知っている初心者としてRにアプローチする経験を追加するので、ここに答えを残します。


PythonとRの両方を使用し、Rの新規参入者としてのニーズに共感します。

回答は主観的なものですので、私の経験からいくつかのポイントを要約します。

  • インターフェースとして rpy2 を使用しますが、「Pythonic」であり、安定しており、予測可能であり、ニーズに十分に効果的です。私は他のパッケージを使用していませんので、これはそれらに対するコメントではなく、むしろrpy2自体のメリットについてです。
  • しかし、両方を学習せずにPythonでRを使用する簡単な方法があるとは考えていません。 2つの言語の間にインターフェイスを追加すると、両方を知っている場合はコーディングが簡単になりますが、一方の言語が不足している人にとってはデバッグの悪夢です。

私のアドバイス:

  1. ほとんどのアプリケーションでは、Pythonには、Rでやりたいことのほとんど(データの分析からプロットまで)を実行できるパッケージがあります。 SciPyNumPypandasBioPythonmatplotlib およびその他の科学パッケージをチェックしてください、または完全な Anaconda または Enthought pythonディストリビューションです。これにより、Python環境内にとどまることができ、必要なパワーのほとんどが提供されます。
  2. 同時に、Rの広範にわたる特殊なパッケージが必要になるため、インタラクティブな環境でRを学習するのに時間を費やしてください。コマンドラインで基本的なRでさえマスターすることはほとんど不可能であることがわかりましたが、 RStudio および Quick-R および Learn-R のチュートリアルは私は非常に速く行きます。

両方を知ったら、クロス言語デバッグの恐ろしさなしに rpy2 で魔法をかけます。


新しいリソース

2015年1月29日に更新

この答えは人気があることがわかったため、最近の2つのリソースを指摘すると役立つと思いました。

  • Ralph HeinkelはこのテーマについてEuroPython 2014で素晴らしい講演を行いました。 PythonとR の強力な世界の組み合わせに関するビデオは、 EuroPython YouTubeチャンネル 。彼を引用:

トリプレット [〜#〜] r [〜#〜]Rserve 、および pyRserve は、Python to R:PythonからR関数をPythonで実装されているように呼び出すことができ、この接続を介して完全なRスクリプトを実行することもできます。

  • rmagic in IPython/Jupyter を使用してRとPythonを組み合わせることが可能になりました。両方の言語を組み合わせた再現可能な研究とノートブックの作成作業が大幅に軽減されます。
60
gauden

rpy2、pyrserve、およびpyperとの比較 に関する質問は、サイトで以前に回答されました。

貢献者の数については、3つすべてが比較的少ないと思います。 Ohloh のようなサイトは、より詳細な回答を提供できます。

パッケージがどの程度積極的に使用されているかを判断するのは困難です。 1つの指標はダウンロード数、もう1つはメーリングリストへの投稿数、stackoverflowなどのサイトでの質問数、それを使用または引用している他のパッケージの数、CVまたは求人の数パッケージ。公正な評価をすることができると信じている限り、利益相反を抱えていると見られることもあります。 ;-)

3つとも長所と短所があります。私はあなたがその選択に基づいていると言います。

4
lgautier

私の個人的な経験は、Rpy2ではなく、Rpyでした。私はしばらくそれを使用しましたが、systemコマンドの使用を支持して削除しました。私にとっての典型的なケースは、Pythonスクリプトを使用してFORTRANモデルを実行し、Rで後処理することでした。私の経験では、Rを使用してコマンドラインツールを作成するのが非常に簡単でした(少なくともLinuxの場合)。コマンドラインツールはモデル実行のルートで実行でき、スクリプトはRoutputディレクトリに一連のRオブジェクトとプロットを生成します。RとPythonは、Pythonコードとは別にRコードを簡単にデバッグできることでした。

Rpyは、RとPythonとの間で多くの往復通信が必要な場合に本当に輝くと思います。しかし、機能がうまく分離でき、ディスクI/Oのオーバーヘッドがそれほど悪くない場合、 system呼び出しに固執します。システムコールに関する詳細については ?system を、コマンドラインツールとしてRスクリプトを実行するには Rscript を参照してください。

RコードをPythonの方法で記述したい場合、すべてのソリューションでRコードをR構文で記述する必要があるため、これは不可能です。Rpyの場合、これはR構文を意味しますが、少し異なります(たとえば.はありません。)Rpyを介してRを使用するショートカットがないことに@gaudenに同意します。

3
Paul Hiemstra