使用rpy2从python调用R脚本

2024-04-25 13:39:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我对rpy2和R都很陌生

我基本上有一个R脚本script.R,它包含函数,比如rfunc(folder)。它与我的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

我完全不明白我给它的参数是如何不是一个字符串的,我猜下一行也会出现同样的问题,folder是一个python字符串,而不是R thingie。

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


Tags: 函数字符串代码目录脚本sourcescriptfolder
1条回答
网友
1楼 · 发布于 2024-04-25 13:39:11

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

import rpy2.robjects as robjects
r = robjects.r
r['source']('script.R')

或者

import rpy2.robjects as robjects
r = robjects.r
r.source('script.R')

r[r.source("script.R")]这样做是错误的。

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

相关问题 更多 >