从函数返回时出现rpy2错误-RNULLType不可迭代

时间:2018-11-29 14:00:06

标签: python r rpy2

我很喜欢rpy2,但遇到了运行Rand Wilcox强大的统计信息包中的函数的障碍。

由于某种原因,当我运行该函数时,出现以下错误:

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 :(得分:0)

我遇到了类似的问题。输出存储在变量result中,该变量显示 TypeError: 'rpy2.rinterface.RNULLType'。但是我需要的输出在result[0]中,然后由result[0].to_csvfile('result.csv')导出到一个csv文件。result[1]引发了异常。

如果您想解决问题,可以尝试一下。可以在https://bitbucket.org/rpy2/rpy2/issues/388/sequence_to_vector-does-not-accept-empty

上找到有关此问题的一些讨论