Ошибка rpy2 при возврате из функции - RNULLType не повторяется - PullRequest
0 голосов
/ 29 ноября 2018

Мне нравится 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

Есть идеи, что здесь происходит?

1 Ответ

0 голосов
/ 20 февраля 2019

Я столкнулся с подобной проблемой.Вывод был сохранен в переменной result, которая показала TypeError: 'rpy2.rinterface.RNULLType'.Но вывод, который мне был нужен, был в result[0], который я экспортировал в CSV-файл на result[0].to_csvfile('result.csv'). Исключение было увеличено на result[1].

Вы можете попробовать это, если пытаетесь решить проблему.Некоторое обсуждение этого вопроса можно найти на https://bitbucket.org/rpy2/rpy2/issues/388/sequence_to_vector-does-not-accept-empty

...