2012-03-08 33 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的追求!)