"漂亮的错误"在...... rpy2 \ robject \ functions.py中

时间:2014-07-25 13:35:56

标签: r rpy2

我从输入对象中收到错误,该错误通过... \ rpy2 \ robjects \ functions.py。具体做法是:

Traceback (most recent call last):
  File "D:\Projects\Kaggle\UPenn_and_Mayo_Clinic_Seizure_Detection\Scripts\py_test01.py", line 174, in <module>
featureEEG = R_EEGA.FeatureEEG(data = time_series_object, classes_Id = classes_id_matrix, rec_Id = record_id_matrix)
  File "C:\Python33\lib\site-packages\rpy2-2.3.8-py3.3-win32.egg\rpy2\robjects\functions.py", line 90, in __call__
return super(SignatureTranslatedFunction, self).__call__(*args, **kwargs)
  File "C:\Python33\lib\site-packages\rpy2-2.3.8-py3.3-win32.egg\rpy2\robjects\functions.py", line 39, in __call__
res = super(Function, self).__call__(*new_args, **new_kwargs)
rpy2.rinterface.RRuntimeError: Error in prettyNum(.Internal(format(x, trim, digits, nsmall, width, 3L,  : 
  invalid 'trim' argument

我猜这个函数不喜欢发送给它的对象。仅供参考,请注意上面的行号,将一些 print()语句放入... \ function.py中以跟踪冒犯行所在的位置(因此它们与行号不对应)在未改变... \ function.py)。输入有问题的 ... \ function.py 代码行位于函数类对象的 __ call __ 函数中:

res = super(Function, self).__call__(*new_args, **new_kwargs)
res = conversion.ri2py(res)  ### this is the error line ###

其中,

new_args = []

new_kwargs =

 {'rec.Id': <Matrix - Python:0x0647C698 / R:0x08734740> [       1,        1,        1, ...,        4,        4,        4], 
'classes.Id': <Matrix - Python:0x0651B4B8 / R:0x08A0F1E8> [       1,        1,        1, ...,        2,        2,        2], 
'data': <Matrix Python:0x065228A0 / R:0x0D740008> [-42.880000, -48.880000, -70.880000, ..., -6.105000, -4.105000, -10.105000]}

上述矩阵是这行代码的输入:

featureEEG = R_EEGA.FeatureEEG(data = time_series_object, classes_Id = classes_id_matrix, rec_Id = record_id_matrix)

其中R_EEGA是R eegAnalysis包

知道如何正确运行吗?了解情况需要的任何其他代码?我能找到答案的任何建议吗?

谢谢

2 个答案:

答案 0 :(得分:0)

trim需要一个真正的TRUEFALSE参数。 new_args = []而不是有效参数的事实很可能是问题的原因。

this thread中的不同上下文中发生了同样的错误。

答案 1 :(得分:0)

@NerdLife提供了解决错误的帮助:

rpy2.rinterface.RRuntimeError: Error in prettyNum(.Internal(format(x, trim, digits, nsmall, width, 3L,  : 
  invalid 'trim' argument

这种情况的解决方案是将'trim'添加为参数,如下所示:

    featureEEG = R_EEGA.FeatureEEG(data = time_series_object,
                                   classes_Id = classes_id_matrix,
                                   rec_Id = record_id_matrix,
                                   trim = R_base.logical(1 == 1)) ### added this last portion ###

现在,当代码运行时 - 使用'trim'= TRUE或'trim'= FALSE - 发生以下错误:

Traceback (most recent call last): File "D:\Projects\Kaggle\UPenn_and_Mayo_Clinic_Seizure_Detection\Scripts\py_test01.py", 
line 177, in <module> trim = R_base.logical(1 == 1)) 
File "C:\Python33\lib\site-packages\rpy2-2.3.8-py3.3-win32.egg\rpy2\robjects\functions.py", 
line 86, in __call__ return super(SignatureTranslatedFunction, self).__call__(*args, **kwargs)
File "C:\Python33\lib\site-packages\rpy2-2.3.8-py3.3-win32.egg\rpy2\robjects\functions.py", 
line 35, in __call__ res = super(Function, self).__call__(*new_args, **new_kwargs) 
rpy2.rinterface.RRuntimeError: Error in (function (length = 0L)  : invalid 'length' argument

由于这是新错误,我会为它创建一个新问题,并会尽快在此处发布链接。

感谢 NerdLife 帮助我摆脱'修剪'错误!

如果有人想要关注此主题的下一部分,则链接如下: https://stackoverflow.com/questions/24972783/rpy2-rinterface-rruntimeerror-error-in-function-length-0l-invalid-lengt