通过传递参数从python代码调用R函数

时间:2018-05-29 13:12:30

标签: r python-3.x

rtest = function(input ,output) {
  a <- input
  b <- output 
  outpath <- a+b
  print(a+b)
  return(outpath)
}

我刚刚返回这个R代码作为获取两个数字之和的函数。我尝试使用子进程从我的python代码运行此函数,方法是传递2个数字作为参数。但它不会将总和值作为返回输出返回。你知道通过传递函数参数在python3中实现它的任何方法。

我使用子进程的python代码是:

args=['3','10'] # (i tried to pass aruments like this) 
command="Rscript" 
path2script = '/...path/rtest.R' 
cmd = [command, path2script] +args 
x = subprocess.check_output(cmd, universal_newlines=True) 
print(x)

但x返回''空值

1 个答案:

答案 0 :(得分:0)

这可以通过python中的rpy2库轻松完成。

    import rpy2.robjects as ro
    path="specify/path to/ R file"

        def function1(input,output):
            r=ro.r
            r.source(path+"rtest.R")
            p=r.rtest(input,output)
            return p


  a=function1(12,12)   # calling the function with passing arguments

谢谢。