使用rpy2从python调用R脚本

问题描述 投票:16回答:1

我对rpy2以及R都很新。

我基本上有一个R脚本script.R,它包含rfunc(文件夹)等功能。它与我的python脚本位于同一目录中。我想从Python调用它,然后启动它的一个功能。我不需要这个R函数的任何输出。我知道它必须非常基础,但我找不到R脚本调用python代码的例子。我目前正在做什么,在Python中:

import rpy2.robjects as robjects

def pyFunction(folder):
    #do python stuff 
    r=robjects.r
    r[r.source("script.R")]
    r["rfunc(folder)"]
    #do python stuff

pyFunction(folder)

我在源代码上遇到错误:

r[r.source("script.R")] File "/usr/lib/python2.7/dist-packages/rpy2/robjects/__init__.py", line 226, in __getitem__ res = _globalenv.get(item) TypeError: argument 1 must be string, not ListVector

我完全不明白我给它的参数是不是一个字符串,我想同样的问题将在下一行发生,文件夹是一个python字符串,而不是一个R thingie。

那么,我怎样才能正确调用我的脚本?

python r call rpy2
1个回答
24
投票

source是一个r函数,它运行r源文件。因此,在rpy2,我们有两种方法可以称之为:

r['source']("script.R")

要么

r.source("script.R")

r[r.source("script.R")]是一个错误的方法。

同样的想法可能适用于下一行。

© www.soinside.com 2019 - 2024. All rights reserved.