我有一种感觉,这将是一个快速修复,因为我开始编码两周前。我尝试运行一个统计测试 - 一个Mantel,通过使用一个已经通过Rpy2写入R的函数(?),在Python中寻找两个距离矩阵之间的相关性。该R组件是 “ade4”,它包含 “mantel.rtest”在Python中运行测试的问题,通过rpy2
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'对象没有属性'mantel'“这导致我相信这里调用的对象被截断为”。“(即”框架“与完整”我尝试重新分配“mantel.rtest”作为一个没有“。”ex)的对象,然后将rmantel =“mantel.rtest” 替换为 result = robjects.r.rmantel(M1,M2, nrepet = 9999) 只接收错误:“AttributeError:'R'对象没有任何属性'rmantel'” - 所以没有工作任何想法,我怎么能解决这个问题?“
新发行:的Mantel检验要求数据在‘DIST’的格式,所以当我运行编辑的代码,我得到以下错误” RRuntimeError:错误的功能(M1,M2,nrepet = 99):类“DIST”预计”
所以我试图将文件转换为这种格式,当我打印结果,这是正确的大小的矩阵的下半部分,但各个领域的 对象填充“NA”
robjects.r('library(ade4)')
rmantel = robjects.r("mantel.rtest")
distify = robjects.r("dist")
for i in windownA:
M1 = asmatrix(identityA[i]).reshape(14,14)
print distify(M1)
MOne = distify(M1, 14)
for j in windownB:
M2 = asmatrix(identityB[j]).reshape(14,14)
print distify(M2)
MTwo = distify(M2, 14)
result = rmantel(M1, M2, nrepet = 9999)
print result
print ' '
我得到”
2 NA
3 NA NA
4 NA NA NA
5 NA NA NA NA
6 NA NA NA NA NA
7 NA NA NA NA NA NA
8 NA NA NA NA NA NA NA
9 NA NA NA NA NA NA NA NA
10 NA NA NA NA NA NA NA NA NA
11 NA NA NA NA NA NA NA NA NA NA
12 NA NA NA NA NA NA NA NA NA NA NA
13 NA NA NA NA NA NAñ一个NA NA NA NA NA
14 NA NA NA NA NA NA NA NA NA NA NA NA NA
作为一个注意,这只是代码的相关部分... – user393200 2010-07-16 16:06:07