如何使用rpy2在python中运行R脚本

时间:2019-04-25 03:58:33

标签: python r rpy2

我的问题似乎很基本,但是即使在rpy2文档上也找不到答案。 我有* .R脚本,可以接受一个参数作为“ file.txt”(我需要从命令行传递该参数)。我想在python脚本中调用R脚本。我的问题是: 如何传递和调理R脚本的参数? 我的解决方案是: 假设R脚本是从这一行开始的:

df <- read.table(args[1], header=FALSE)
"
 here args[1] should be the file which is not passed from the command line
"
....

现在我在python脚本中编写一个函数:

from rpy2 import robjects as ro
def run_R(file):
    r = ro.r
    r.source("myR_script.R")
   # how to pass the file argument to
   # the R script and how to
   # recuperate this argument in the R code?

2 个答案:

答案 0 :(得分:0)

  

我的问题似乎很基本,但是即使在rpy2文档上也找不到答案。

但这可能是一个很好的起点:

https://rpy2.github.io/doc/v3.0.x/html/robjects_rpackages.html#importing-arbitrary-r-code-as-a-package

  

(...)

df <- read.table(args[1], header=FALSE)
"
 here args[1] should be the file which is not passed from the command line
"

到达R时,命令行参数早已传递给R(因为R已被初始化并在那时运行)。文档中上面的链接是解决该问题的一种相对优雅的方法。否则,您总是可以在R中创建向量args

rpy2.robjects.globalenv['args'] = robjects.vectors.StrVector(['my_file.csv'])
r.source("myR_script.R")

答案 1 :(得分:0)

为什么只使用import cv2 cv2.imwrite('decrypted3.png', decrypted) cv2.imshow("decrypted3", decrypted) cv2.waitKey() 来运行R脚本?考虑避免使用此接口,而应使用自动rpy2命令行,Python可以像任何外部可执行文件一样使用内置Rscript.exe进行调用,即使传递所需的参数也是如此。

下面假设您在PATH环境变量中具有R bin文件夹,可以识别subprocess。如果不是,请在 cmd 的第一个参数中添加此可执行文件的完整路径。另外,请确保将文件的完整路径传递给 run_R 方法:

Rscript