Мне нравится rpy2, но я столкнулся с ошибкой при запуске функции из надежного пакета статистики Рэнда Уилкокса.
По какой-то причине, когда я запускаю функцию, я получаю следующую ошибку:
TypeError: 'rpy2.rinterface.RNULLType' object is not iterable
Я вполне уверен, что правильно использую функцию, поскольку она просто принимает в качестве аргументов некоторые целые числа и фрейм данных (или список списков, или массив).
Вот воспроизводимый пример:
import pandas as pd
import rpy2.robjects as robjects
import random
import numpy as np
from rpy2.robjects import pandas2ri
from urllib.request import urlopen
from rpy2.robjects.packages import SignatureTranslatedAnonymousPackage
pandas2ri.activate()
url = urlopen('https://dornsife.usc.edu/assets/sites/239/docs/Rallfun-v35.txt')
string = b''.join(url.readlines()).decode()
wilcox = SignatureTranslatedAnonymousPackage(string, "wilcox")
data=[list(np.random.normal(0, 1, 50))]*6
wilcox.bbmcppb(2,3,data)
Как вы можете видеть, возвращаются некоторые нули, а также, похоже, присутствуют некоторые другие данные.TypeError: объект 'rpy2.rinterface.RNULLType' не повторяется
R object with classes: ('list',) mapped to:
<ListVector - Python:0x7f0e889dba08 / R:0x9a7bec8>
[ListVector, Matrix, Matrix, Matrix]
R object with classes: ('list',) mapped to:
<ListVector - Python:0x7f0e889dba08 / R:0x9a7bec8>
[ListVector, Matrix, Matrix, Matrix]
Fac.A: <class 'rpy2.robjects.vectors.Matrix'>
R object with classes: ('matrix',) mapped to:
<Matrix - Python:0x7f0e889da948 / R:0xaf6ec80>
[1.000000, NA_real_, NA_real_, 0.050000, NA_real_, NA_real_
.
.
.
Странно то, что если я назначу его выходной переменной, он не завершится, пока я его не проверю:
без сбоев
output=wilcox.bbmcppb(2,3,data)
сбои (с вышеуказанной ошибкой)
output=wilcox.bbmcppb(2,3,data)
output
Есть идеи, что здесь происходит?