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

时间:2014-10-16 18:52:39

标签: python r rpy2

正如标题所说,我有一个使用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]

两个文件都在同一目录中。我键入&#34; python rpy2_test.py&#34;这是我的错误:

readLines中的错误(文件,警告= FALSE):   5个参数传递给.Internal(readLines),需要6个 Traceback(最近一次调用最后一次):   文件&#34; rpy2_test.py&#34;,第7行,in   robjects.r(&#39;&#39;&#39;源(&#39; r_code.R&#39;)&#39;&#39;&#39;)   文件&#34; /usr/local/lib/python2.7/dist-packages/rpy2/robjects/ init .py&#34;,第246行,致电

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

return super(SignatureTranslatedFunction,self)。调用(* args,** kwargs)   文件&#34; /usr/local/lib/python2.7/dist-packages/rpy2/robjects/functions.py",第99行,致电

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

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

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

Python版本:2.7.3

Numpy版本:1.8.0

Rpy2版本:2.4.4

R版本:3.0.2

Ubuntu:12.04.2

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

好吧,经过几个小时的挫折之后。

我过去编译了自己的R,但是这次它会编译/安装好但不会让我构建一些libs(然后会在rpy2中抛出错误)所以我卸载/清理/删除/删除了很多R文件尽我所能。还使用apt-get --purge删除以防旧版安装。

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

然后 apt-get install r-base 让所有东西重新进入。

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

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

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

@cdeterman:也许是R版......谁知道! (仍为+1最佳建议)

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