2012-03-08 104 views
4

`交互式.EXE /二進制我想內R.`系統()從R/RGUI

通過互動運行使用system()交互式二進制,假設我想從運行python命令行解釋器在R內(誰知道爲什麼,但無論如何...)。

當我在命令行(即R項)運行R,I可以啓動python解釋像這樣:

> system('python.exe') 
Python 2.7.2 on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> # I can now type in python commands and basically use the python 
    # interpreter until I've had enough. 
    # Now I'll exit the python interpreter: 
>>> exit() 
> # Presto, I'm back to the R prompt! 

的一點是,我可以選自R Python解釋交互,就如同我開始在首位的命令行解釋器,我可以離開它,當我做找回到R提示。

現在,讓我們嘗試了R GUI一樣:

> system('python.exe') 
Python 2.7.2 on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> 
> # eh? it exitted? 

這只是運行python.exe(即顯示歡迎信息),但後來退出馬上 - 我不能與Python解釋器交互。

我的問題是 - 有什麼辦法(在讀GUI,即窗口中的一個)來運行該解釋與它在來自R的任何命令行版本的工作方式相同互動? (僅供參考 - 當我第一次開始學習如何編寫R包時,我作爲我的第一個R包的目標就是能夠在R中播放nethack精美地工作(我使用linux &因此命令行R ),除非我把它帶到RGUI將啓動過程,但不能是交互的窗口,有效地鎖定了研發,直到我強行結束NetHack.exe過程)。

+0

我能得到這個做'系統運行(「python.exe」,看不見= FALSE,等待= FALSE)',但這並啓動整個事情在一個新的命令提示符窗口中,而我更喜歡它從R終端發生。 – 2012-03-08 04:07:14

+0

我很確定你想要的是使用Rgui不可能的。 – 2012-03-08 04:40:16

回答

4

我的工作了 - 開始看Windows下的幫助文件(原來的UNIX &窗戶?system不同):

不要試圖從Rgui運行需要用戶輸入的控制檯應用程序設置intern=TRUEshow.output.on.console=TRUE。他們不會工作。

所以看起來像最好的,我會得到(從RGUI無論如何)正在啓動一個新的窗口:

system('NetHack.exe',invisible=FALSE,wait=FALSE) 

我將添加一個if (.Platform$GUI == "Rgui")檢查,這和設置適當的參數。

(好哇,起了NetHackR的追求!)