我想知道如何打开R脚本并与之交互(例如,发送字符串,整数等)。虽然我之前没有使用它,但子进程似乎是一种合理的方法。
到目前为止,我有
process = subprocess.Popen(['/path/to/Rscript --no-save path/to/script.R'], stdout=subprocess.PIPE, stdin=subprocess.PIPE, shell=True)
这似乎是成功打开script.R,但是在我的脚本中我提示用户输入一个整数,我不能完全理解如何做到这一点。我试过了:
process.communicate(input=1)[0]
但我似乎在咆哮着错误的树。子进程关闭但不会显示接收此输入。
编辑:此时Rpy可能不是一个好的选择,因为此脚本的用户不一定能访问该模块及其依赖项。
答案 0 :(得分:2)
试试PypeR?
通过管道在python中使用R是一个很棒的界面。
答案 1 :(得分:1)
<强> EDIT2 强>
怎么样?
process = subprocess.Popen(['/path/to/Rscript', '--no-save', 'path/to/script.R'], stdout=subprocess.PIPE, stdin=subprocess.PIPE)
<强> EDIT1 强>
您只能通过stdin和stdout在进程之间进行通信。
process.communicate("1\n")
会帮助你吗?