python - 使用 rpy2 从 python 调用 R 脚本

标签 python r call rpy2

我是 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")] 文件“/usr/lib/python2.7/dist-packages/rpy2/robjects/__init__.py”,第 226 行,在 __getitem__ 中 res = _globalenv.get(项目) 类型错误:参数 1 必须是字符串,而不是 ListVector

我很不明白我给它的论点怎么不是一个字符串,我猜同样的问题会在下一行发生,folder 是一个 python 字符串,而不是一个R 东西。

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

最佳答案

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")] 是错误的做法。

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

关于python - 使用 rpy2 从 python 调用 R 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24544190/

相关文章:

使用嵌套因子删除条形图中每个面板未使用的因子

java - 从 perl 调用 java 类

python watchdog 修改并创建重复事件

python - PySpark 中 pandas.cut() 的等价物是什么?

python - 将单个索引列表拆分为多个列表索引?

r - 求解与多元正态密度相关的二重积分

r - 如何将 gam() 合并到 Lattice 包的 xyplot() 中?

java - 如何在 Java 中使用循环调用多个方法?

function - Shell脚本调用带有变量的函数?

python - 如何在 Python 3 中启用 xrange 以实现可移植性?