问题:通过rpy2在Python中运行测试

问题:通过rpy2在Python中运行测试,python,r,rpy2,Python,R,Rpy2,考虑到我两周前开始编写代码,我觉得这将是一个快速解决方案。我试图在Python中运行一个统计测试—一个Mantel,寻找两个距离矩阵之间的相关性—使用一个已经用R编写的函数(?),通过Rpy2。R模块为“ade4”,包含“mantel.rtest” 编辑:现在可以了!“这返回错误:“AttributeError:'R'对象没有属性‘mantel’”,这使我相信此处调用的对象在“.”处被截断(即“mantel”相对于完整的“mantel.rtest”)。我尝试将“mantel.rtest”重新指定

考虑到我两周前开始编写代码,我觉得这将是一个快速解决方案。我试图在Python中运行一个统计测试—一个Mantel,寻找两个距离矩阵之间的相关性—使用一个已经用R编写的函数(?),通过Rpy2。R模块为“ade4”,包含“mantel.rtest”

编辑:现在可以了!“这返回错误:“AttributeError:'R'对象没有属性‘mantel’”,这使我相信此处调用的对象在“.”处被截断(即“mantel”相对于完整的“mantel.rtest”)。我尝试将“mantel.rtest”重新指定为没有“.”ex)的对象。” rmantel=“mantel.rtest” 并将其替换为 结果=robjects.r.rMatel(M1,M2,nrepet=9999) 只收到错误:“AttributeError:'R'对象没有属性'rmantel'”-因此,这不起作用。有什么想法可以解决这个问题吗?”

新版本:壁炉架测试需要“dist”格式的数据,因此当我运行编辑的代码时,我得到以下错误“rrontimeerror:error in function(m1,m2,nrepet=99): 应为'dist'类的对象“

所以我试着将文件转换成那种格式,当我打印结果时,它是正确大小的矩阵的下半部分,但所有字段都用“NA”填充

我得到“

123456789101113

2 NA

3娜娜

4娜娜娜娜

5不,不,不,不

6不,不,不,不

7不,不,不,不

8不,不,不,不,不

9不,不,不,不,不

10钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠

11娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜

12钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠

13钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠


14 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA

In [1]: %cpaste
Pasting code; enter '--' alone on the line to stop.
:from rpy2 import robjects
import rpy2.robjects as robjects
robjects.r('library(ade4)')
::::::--

In [3]: robjects.r['mantel.rtest']
Out[5]: <RFunction - Python:0xa2aac0c / R:0xac9ec04>

从rpy2-2.1.x中,推荐的简单方法是:

from rpy2.robjects.packages import importr
stats = importr('stats')
ade4 = importr('ade4')

result = ade4.mantel_rtest(stats.dist(M1),
                           stats.dist(M2),
                           nrepet)

请注意,这只是代码的相关部分……感谢您的快速回复。奇怪的是,我编辑了我的代码,以便阅读,正如我在上面展示的那样,一切正常。不幸的是,现在我有了另一个(更特殊的)问题,与我正在尝试运行的测试相关…如果您对这个新问题有任何见解,我将非常感谢。感谢您,我不久前对此进行了尝试,但收到以下消息:“ImportError:没有名为packages的模块“。我已经决定走另一个方向,刚刚陷入另一个僵局,但我会在几分钟后将这个问题作为一个单独的问题发布。代码是针对rpy2-2.1.x的。你的其他帖子暗示你正在使用MSWindows(2.1.x系列中还没有发布该版本)。这是真的,我暂时只能使用Windows7being@vehicularlambslaughter:2.0.x系列是第一次尝试;2.1.x明显更简单、更好(不仅仅是我自己认为的,这也是我听到和读到的)。希望在将来的某个时候,使用rpy2在MSWindows方面会有进展。
In [1]: %cpaste
Pasting code; enter '--' alone on the line to stop.
:from rpy2 import robjects
import rpy2.robjects as robjects
robjects.r('library(ade4)')
::::::--

In [3]: robjects.r['mantel.rtest']
Out[5]: <RFunction - Python:0xa2aac0c / R:0xac9ec04>
In [8]: robjects.r('mantel.rtest')
Out[8]: <RFunction - Python:0xaf7042c / R:0xac9ec04>
result = rmantel(MOne, MTwo, nrepet = 9999)
from rpy2.robjects.packages import importr
stats = importr('stats')
ade4 = importr('ade4')

result = ade4.mantel_rtest(stats.dist(M1),
                           stats.dist(M2),
                           nrepet)