在执行R脚本后将结果获取到python变量

在执行R脚本后将结果获取到python变量,python,r,subprocess,Python,R,Subprocess,我正在从python执行一个r脚本,我希望输出在python变量中可用。我该怎么做 python脚本: import subprocess def runR(id, lat, long): value = subprocess.popen("C:/R/R-3.2.0/bin/Rscript E:/Personal/python/script.R --args "+id+" "+lat+" "+long , shell=True) print value R脚本:

我正在从python执行一个r脚本,我希望输出在python变量中可用。我该怎么做

python脚本:

import subprocess 

def runR(id, lat, long):
    value = subprocess.popen("C:/R/R-3.2.0/bin/Rscript      E:/Personal/python/script.R --args "+id+" "+lat+" "+long , shell=True)
    print value
R脚本:

a = "Hello";

我希望可以在python变量值上找到Hello。

您可以根据需要修改以下示例

a、 py:

b、 py:

b.py的输出:

您可以使用:

作为替代方案,您可以重写R脚本,使其将结果以一些众所周知的格式(如json)转储到stdout,然后使用子流程模块运行它,并解析结果:

#!/usr/bin/env python
import json
import subprocess

id, lat, long = 1, 40, 74 
out = subprocess.check_output(r"C:\R\R-3.2.0\bin\Rscript.exe "
                              r"E:\path\to\script.R --args "
                               "{id} {lat} {long}".format(**vars()))
data = json.loads(out.decode('utf-8'))

注意:如果在此处使用可执行文件的完整路径,则无需在Windows上使用shell=True。

为什么不自行定义值变量,使其可用于会话而不是函数?>作弊方式:运行程序,将数据写入本地文本文件,然后从Python访问该文件:p这就是我曾经尝试将信息从Python传输到PHP/javascript的方式。这篇文章似乎回答了您的问题:r脚本只是我给出的一个示例。我需要执行r代码并用Python获得答案您可以运行程序,将所有数据写入文本文件,然后从Python访问该文件
import subprocess
result = subprocess.check_output(["python", "a.py"])
print result.strip() + 'world'
helloworld
import rpy2.robjects as robjects

robjects.r('''
a = "Hello";
''')
a = robjects.r['a']
#!/usr/bin/env python
import json
import subprocess

id, lat, long = 1, 40, 74 
out = subprocess.check_output(r"C:\R\R-3.2.0\bin\Rscript.exe "
                              r"E:\path\to\script.R --args "
                               "{id} {lat} {long}".format(**vars()))
data = json.loads(out.decode('utf-8'))