簡體   English   中英

ESS和rpy2在Emacs中共享R進程

[英]ESS and rpy2 sharing R process in Emacs

我是R的新用戶,並開始使用Emacs Speaks Statistics(ESS)。 我還使用rpy2(一個到R的python接口),我可以在我在Emacs中運行的ipython shell中啟動一個R-process。

是否有可能讓ESS和rpy2以某種方式共享相同的R進程,以便我可以在Python / rpy2中進行一些編碼來設置一些R對象,然后切換到ESS並直接運行R命令而不使用python / rpy2?

例如,我要么使用Mx R R在Emacs中啟動R,然后在我的ipython會話中讓rpy2.robjects.r指向或使用這個正在運行的R進程; 或者我會用rp2.robjects.r在python中啟動R然后讓ESS連接到python嵌入的R進程。

我想問題是rpy2中的R進程嵌入在python解釋器中,並且如果我可以直接操作R而不通過rpy2,那么表示R對象的python對象將變得“不同步”? 我承認我沒有完全了解rpy2和Emacs過程處理的工作原理......

你想要的是某種基於rpy2技術構建的R控制台。 這不是很難建立。

我想R'的'eval'函數有一些rpy2接口,所以你只需要一些python代碼來讀取行並將它們提供給rpy2.eval(line)或者其他什么。 然后,這將包含在一個漂亮的控制台式界面中,並具有命令行調用和編輯等功能。

使用交互式R完成后,您將使用一些代碼退出控制台(而不是'q()'!)並返回您的python解釋器。

我認為這件事還沒有建成,但類似的事情已經存在。 Quantum GIS的'manageR'插件(映射s / w)提供了一個從python啟動並使用rpy的R控制台。

如果您真的開始利用ESS,那么您需要某種方式將ESS的輸入發送到偵聽python進程以提供給R'eval'函數。 有點超越我。

正如Spacedman所回答的那樣,可能需要使用Python + rpy2構建一個R控制台。

但是,最簡單的方法可能是在運行Emacs之前將其別名為“R”。 這樣Emacs中的“Meta-x R”就可以稱之為“真正的”R控制台。 這只是一部分; 如果你希望將你的ess R-console和你的python會話插件連接到同一個R,你將不得不實現某種類型的客戶端 - 服務器層。

與此相關,Nathaniel在他的rnumpy中實現了一個非常好的功能(rpy2頂部的層,我認為只與rpy2-2.0.x兼容)。 當與ipython一起使用時,可以切換到類似R的控制台並返回到ipython Python控制台。 可以通過Emacs運行ipython,也可以在切換到R時激活ess-R模式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM