IPython笔记本和rmagic/rpy2:找不到模块ri2py(OSX 10.8.5,python 2.7,R 3.1)

use*_*206 7 macos r ipython rpy2

我正试图通过Enthought Canopy使用Python 2.7.6来使用IPython笔记本的rmagic扩展.

当我尝试以下示例时:

import numpy as np  
import pylab  
X = np.array([0,1,2,3,4])  
Y = np.array([3,5,4,6,7])  
pylab.scatter(X, Y)

%Rpush X Y  
%R lm(Y~X)$coef  
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

AttributeError                            Traceback (most recent call last)  
<ipython-input-7-96dff2c70ba0> in <module>()
      1 get_ipython().magic(u'Rpush X Y')
----> 2 get_ipython().magic(u'R lm(Y~X)$coef')
…  

/Users/hrob/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/IPython/extensions/rmagic.pyc in eval(self, line)  
    212             res = ro.r("withVisible({%s})" % line)  
    213             value = res[0] #value (R object)  
--> 214             visible = ro.conversion.ri2py(res[1])[0] #visible (boolean)  
    215         except (ri.RRuntimeError, ValueError) as exception:  
    216             warning_or_other_msg = self.flush() # otherwise next return seems to have copy of error  

AttributeError: 'module' object has no attribute 'ri2py'  
Run Code Online (Sandbox Code Playgroud)

我找不到其他人有同样的问题而且我自己也不太了解它.虽然convert.py中没有ri2py的定义.
我最初安装了Anaconda,并通过它运行python笔记本,结果完全相同.

rpy2(版本2.4.0)安装成功,但是当我测试它时,我得到1个预期的失败,如下所示:

python -m 'rpy2.robjects.tests.__init__'  
…  
testNewWithTranslation (testFunction.SignatureTranslatedFunctionTestCase) ... expected failure
Run Code Online (Sandbox Code Playgroud)

我不知道那是否相关.

任何人都可以建议问题可能是什么以及我如何解决它?我正在使用兼容的python,R等版本,还是需要重新安装/更新某些东西?

小智 23

你在用%load_ext rmagic吗?

如果是这样,请尝试使用%load_ext rpy2.ipython.

这是2.4.0版中的新功能之一.

  • 使用`%load_ext rpy2.ipython`,我得到`ImportError:没有名为'rpy2.ipython#的模块用于以后的IPython版本,e'.安装`rpy2`时还需要做些什么吗? (2认同)