正如标题所说,我有一个使用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
有什么想法吗?谢谢!
答案 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更新以某种方式干扰了我的源代码安装。我很想知道其他人是否有过冲突。