1

我在以下路径本地保存了一个 .R 文件:

Rfilepath = "C:\\python\\buyback_parse_guide.r"

RScript.exe 的命令是:

RScriptCmd = "C:\\Program Files\\R\\R-2.15.2\\bin\\Rscript.exe --vanilla"

我尝试运行:

subprocess.call([RScriptCmd,Rfilepath],shell=True)

但它返回 1 - 并且 .R 脚本没有成功运行。我究竟做错了什么?我是 Python 新手,所以这可能是一个简单的语法错误......我也尝试了这些,但它们都返回 1:

subprocess.call('"C:\Program Files\R\R-2.15.2\bin\Rscript.exe"',shell=True)

subprocess.call('"C:\\Program Files\\R\\R-2.15.2\\bin\\Rscript.exe"',shell=True)

subprocess.call('C:\Program Files\R\R-2.15.2\bin\Rscript.exe',shell=True)

subprocess.call('C:\\Program Files\\R\\R-2.15.2\\bin\\Rscript.exe',shell=True)

谢谢!

4

2 回答 2

0

RScriptCmd 需要只是可执行文件,没有命令行参数。所以:

RScriptCmd = "\"C:\\Program Files\\R\\R-2.15.2\\bin\\Rscript.exe\""

然后 Rfilepath 实际上可以是所有参数 - 并重命名:

 RArguments = "--vanilla \"C:\\python\\buyback_parse_guide.r\""
于 2012-11-29T02:49:38.107 回答
0

看起来你和我有类似的问题。我不得不将 RScript 重新安装到没有空格的路径。

请参阅:使用 os.system() 或 subprocess() 通过 Python 运行 Rscript

这就是我如何解决 Python 和 Rscript 之间的通信:

在 Python 中的一部分:

from subprocess import PIPE,Popen,call
p = subprocess.Popen([ path/to/RScript.exe, path/to/Script.R, Arg1], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
out = p.communicate()
outValue = out[0]

outValue包含执行 Script.R 后的输出值

在 R 脚本中的一部分:

args <- commandArgs(TRUE)
argument1 <- as.character(args[1])
...
write(output, stdout())

output是要发送到 Python 的变量

于 2015-02-16T16:56:37.070 回答