使用rpy2从python调用R脚本

Eff*_*gan 18 python r call rpy2

我对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)
Run Code Online (Sandbox Code Playgroud)

我在源代码上遇到错误:

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.

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

CT *_*Zhu 27

source是一个r运行r源文件的函数.因此rpy2,我们有两种方法可以调用它:

import rpy2.robjects as robjects
r = robjects.r
r['source']('script.R')
Run Code Online (Sandbox Code Playgroud)

要么

import rpy2.robjects as robjects
r = robjects.r
r.source('script.R')
Run Code Online (Sandbox Code Playgroud)

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

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