首页 文章

RPy2导入R源函数会产生错误

提问于
浏览
0

正如 Headers 所说,我有一个使用Rpy2并导入R文件的Python脚本 .

R文件内容(名为r_code.R):

test_function <- function(A)
{
    A <- as.vector(A)
    return(list(SUM=sum(A)))
}

Python文件内容(名为rpy2_test.py):

import numpy as np
import rpy2.robjects as robjects
import rpy2.robjects.numpy2ri
rpy2.robjects.numpy2ri.activate()

robjects.r('''source('r_code.R')''')

r_test_function = robjects.globalenv['test_function']

def py_test_function(a):
    mc = r_test_function(a)
    return mc[0]

a = np.array([1,2,3,4,5])
mc = py_test_function(a)
print mc[0]

两个文件都在同一目录中 . 我键入“python rpy2_test.py”,这是我的错误:

readLines中的错误(file,warn = FALSE):传递给.Internal(readLines)的5个参数需要6个Traceback(最近一次调用最后一个):文件"rpy2_test.py",第7行,在robjects.r中('''source(' r_code.R ')'' ')文件“/usr/local/lib/python2.7/dist-packages/rpy2/robjects/ init .py”,第246行, call

res = self.eval(p)文件"/usr/local/lib/python2.7/dist-packages/rpy2/robjects/functions.py",第166行, call

return super(SignatureTranslatedFunction,self) . call (* args,** kwargs)文件"/usr/local/lib/python2.7/dist-packages/rpy2/robjects/functions.py",第99行, call

res = super(功能,自我) . call (* new_args,** new_kwargs)rpy2.rinterface.RRuntimeError:readLines中的错误(file,warn = FALSE):

5个参数传递给.Internal(readLines),需要6个

有趣的是,它不久前工作,我没有改变任何东西(至少我认为我没有)在我的系统上 .

Python版本:2.7.3

Numpy版本:1.8.0

Rpy2版本:2.4.4

R版本:3.0.2

Ubuntu:12.04.2

有任何想法吗?谢谢!

1 回答

  • 0

    好吧,经过几个小时的挫折 .

    我过去编译了自己的R,但是这次编译/安装很好但不会让我构建一些库(然后会在rpy2中抛出错误)所以我卸载/清理/删除/删除了和我一样多的R文件可以 . 如果有较旧的安装,也使用apt-get --purge删除 .

    确保我的apt-get sources.list文件列出了有效的镜像镜像,然后是apt-get update .

    然后apt-get install r-base重新开始了 .

    接下来是一个pip安装rpy2 --upgrade(即使我尝试删除它,不知何故它仍然像鞋子上的狗粪一样挂着,这意味着我无法进行全新安装)

    回到商业 . 对于我的生活,我不知道为什么我的rpy2桥停止工作 .

    对这个问题没什么兴趣,所以我会接受我自己的答案并关闭它 . 也许它将来会帮助别人 .

    @cdeterman:也许是R版......谁知道! (仍然,1为最好的建议)

    更新:我有预感,也许它可能是ubuntu更新,以某种方式干扰我的源安装 . 我很想知道是否有其他人有过冲突 .

相关问题