3

私はRのかなり新しいユーザーであり、Emacs Speaks Statistics(ESS)の使用を開始しました。また、rpy2(RへのPythonインターフェイス)を使用して、Emacsで実行されているipythonシェルでRプロセスを開始できます。

ESSとrpy2に同じRプロセスを共有させて、Python / rpy2で少しコーディングしてRオブジェクトを設定し、ESSに切り替えて、python / rpy2を使用せずにRコマンドを直接実行できるようにすることは可能ですか?

たとえば、Emacs内でを使用してRを開始M-x Rし、ipythonセッションでrpy2.robjects.rこの実行中のRプロセスをポイントするか使用します。または、PythonでRを開始してrp2.robjects.rから、ESSにPythonに埋め込まれたRプロセスに接続させます。

問題は、rpy2のRプロセスがPythonインタープリターに埋め込まれていることと、rpy2を経由せずにRを直接操作できる場合、Rオブジェクトを表すPythonオブジェクトが「非同期」になることだと思います。私はrpy2とEmacsのプロセス処理がどのように機能するかについて完全な洞察を持っていないことを認めます...

4

2 に答える 2

2

必要なのは、rpy2 テクノロジで構築されたある種の R コンソールです。これを構築するのはそれほど難しくありません。

Rの「eval」関数へのrpy2インターフェースがあると思うので、行を読み取ってrpy2.eval(line)などにフィードするためのpythonコードが必要です。その後、コマンドラインのリコールや編集などを備えた素敵なコンソール スタイルのインターフェイスにすべてがまとめられます。

インタラクティブな R を使い終わったら、コード ('q()' ではない!) でコンソールを終了し、Python インタープリターに戻ります。

これはまだ構築されていないと思いますが、同様のものが構築されています。Quantum GIS (マッピング ソフトウェア) 用の「manageR」プラグインは、Python から起動され、rpy を使用する R コンソールを提供します。

これに ESS を活用することに本当に設定している場合は、ESS の入力をリッスンしている Python プロセスに送信して、R 'eval' 関数にフィードする何らかの方法が必要になります。私を少し超えています。

于 2011-02-26T16:02:22.243 に答える
0

Spacedman が回答したように、Python+rpy2 を使用して R コンソールを構築する必要があるかもしれません。

ただし、Emacs を実行する前にこれを "R" にエイリアスするのが最も簡単かもしれません。このように、Emacs の「Meta-x R」は、「実際の」R コンソールではなく、それを呼び出します。それはほんの一部です。ess R コンソールと Python セッション プラグインの両方を同じ R に接続したい場合は、何らかのクライアント サーバー レイヤーを実装する必要があります。

それに関連して、Nathaniel は彼の rnumpy に本当に素晴らしい機能を実装しました (rpy2 の最上位のレイヤーで、rpy2-2.0.x とのみ互換性があると思います)。ipython で使用すると、R に似たコンソールに切り替えて、ipython Python コンソールに戻ることができます。Emacs を介して ipython を実行することが可能であり、R に切り替えるときに ess-R モードを有効にすることも可能です。

于 2011-02-27T13:47:59.967 に答える