使用system2()将变量从R传递到python脚本

时间:2015-05-20 18:59:05

标签: python r

我已经看过这个问题的各种版本,但是无法弄清楚如何使用system2()将数字变量从R传递到Python中

例如假设我有以下python脚本作为Test.py。

a = 1
b = 2
def add(a,b):
    print a + b

我可以用R

在R中运行它
pypath = './Test.py'
system2('python', args=(sprintf('"%1$s"',pypath)))

但是,如果我想传递a和b的值,并将R中返回的值传递给R对象,该怎么办?像,

a = 1
b = 2
d = system2('python',args = (sprintf('"%1$s" "%2$s" "%3$s"',pypath,a,b)))

我尝试了各种方法,但都失败了。我知道上面的错误,我只是无法弄清楚如何传入a和b,更不用说返回一个值了

我的问题是(1)有可能吗? (2)你是怎么做到的?

2 个答案:

答案 0 :(得分:1)

我总是将我的整个字符串连接起来......

a <- "/path/to/python"
b <- "script_to_call.py"
c <- 1

system(paste0(a, " ", b, " ", c))

答案 1 :(得分:1)

System2接收一个字符数组。因此,您可以执行

,而不是尝试提供整个字符串
system2('python', args = c('./Test.py', as.character(a), as.character(b)))

将输出传输到R的一种方法是使用&#34;&gt;&#34;将其写入文件然后从R中读取文件。(我确定这不是最有效的方法)。

system2('python',args = c('/Test.py', as.character(a), as.character(b), '>/targetDir/targetFile'))