У меня такое чувство, что это будет быстрое решение, учитывая, что я начал кодировать две недели назад.Я пытаюсь запустить статистический тест - Mantel, ища корреляцию между двумя матрицами расстояний - в Python, используя функцию (?), Которая уже была написана в R, через Rpy2.Модуль R - это "ade4" и он содержит "mantel.rtest"
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 "против полного" mantel.rtest "). Я попытался переназначить" mantel.rtest "как объект без". "ex) rmantel =" mantel.rtest "и подставить этот результат = robjects.r.rmantel (M1, M2, nrepet = 9999) только для получения ошибки: "AttributeError: у объекта 'R' нет атрибута 'rmantel'" - так что это не сработало. Любые мысли о том, как мне обойти этоПроблема? "
Новый выпуск : Для теста Mantel требуются данные в формате" dist ", поэтому, когда я запускаю отредактированный код, я получаю следующееerror "RRuntimeError: Ошибка в функции (m1, m2, nrepet = 99): ожидается объект класса 'dist'"
Поэтому я попытался преобразовать файл в этот формат, и когда явыведите результаты, это нижняя половина матрицы правильного размера, но все поля заполненыh "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 ' '
я получаю "
1 2 3 4 5 6 7 8 9 10 11 12 13
2 NA
3NA NA
4 NA NA NA
5 NA NA NA NA
6 NA NA NA NA NA
7 NA NA NA NA NA *
8 NA NA NA NA NA NA NA
9 NA NA NA NA NA NA NA
10 NA NA NA NA NA NA NA NA
11НА НА НА НА НА НА НА НА НА
12 НА НА НА НА НА НА НА НА НА
13 НА НА НА НА НА НА НА НА НА НА НА
14 NA NA NA NA NA NA NA NA NA NA NA * NA