正如 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 回答
好吧,经过几个小时的挫折 .
我过去编译了自己的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更新,以某种方式干扰我的源安装 . 我很想知道是否有其他人有过冲突 .