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

2024-09-30 01:22:46 发布

您现在位置:Python中文网/ 问答频道 /正文

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

from rpy2 import robjects

import rpy2.robjects as robjects

robjects.r('library(ade4)')
**EDIT** rmantel = robjects.r("mantel.rtest")

for i in windownA:

    M1 = asmatrix(identityA[i]).reshape(14,14)

    for j in windownB:

        M2 = asmatrix(identityB[j]).reshape(14,14)

       **EDIT** result = rmantel (M1, M2, nrepet = 9999)
        print result
        print ' '

编辑:这个现在起作用了!“这将返回错误:”AttributeError:'R'object没有属性'mantel',这使我认为在此处调用的对象在“.”(即“mantel”与“full”之间)处被截断壁炉架"). 我试着重新分配壁炉架作为没有“.”ex的对象 rmantel=“壁炉架" 用它代替 结果=robjects.r.rmantel(M1,M2,nrepet=9999) 只接收到错误:“AttributeError:'R'object没有属性'rmantel'—因此无法工作。我有什么想法吗?”

新问题:Mantel测试需要“dist”格式的数据,因此当我运行编辑的代码时,我得到以下错误“RRuntimeError:error in function(m1,m2,nrepet=99): 应输入“dist”类的对象“

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

^{pr2}$

我得到了“

1 2 3 4 5 6 7 8 9 10 11 12 13

2不适用

3不适用

4不适用不适用

5不,不,不

6不,不,不,不

7不,不,不,不

8不,不,不,不

9不,不,不,不,不

10纳纳那那那那那那那那

11不,不,不,不,不

12纳纳那那那那那那那那那

13娜娜娜娜娜娜娜娜娜娜娜娜娜娜

14纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳


Tags: 对象代码in错误矩阵rpy2m1m2
2条回答

尝试robjects.r['mantel.rtest']

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>

这也适用于:

^{pr2}$

编辑(针对新版本): 既然您说mantel.rtest需要dist格式的数据,我想M1和{}应该是{}格式。但是M1和{}似乎是numpy数组。另一方面,MOne和{}看起来可能是dist格式。在

所以也许可以试试

result = rmantel(MOne, MTwo, nrepet = 9999)

从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)

相关问题 更多 >

    热门问题