2012-10-17 40 views
2

我使用rpy2从python中调用R函数。处理rpy2中的空返回

from rpy2.robjects import * 
result=r.someFunctioninR() #someFunctioninR is a R function written by myself 
if result==r('as.null()'): 
    do something 
else: 
    do something else 

“结果”由someFunctioninR()返回可以是NULL或其他格式。 result==r('as.null()')不起作用。当结果为NULL时,有没有其他方法可以得到True?

回答

2

尝试rpy2.rinterface.NULLrobj.r("NULL")

In [1]: from rpy2 import robjects as robj 

创建一个R函数返回NULL:

In [2]: robj.r("nullfn = function(){NULL}") 
Out[2]: <SignatureTranslatedFunction - Python:0x104ea5ef0/R:0x1058be4a8> 

In [3]: result = robj.r.nullfn() 

In [4]: print result 
NULL 

In [5]: print result == robj.rinterface.NULL 
True 

In [6]: print result == None 
False 

编辑:我只是意识到,你的代码应该以上工作原样。我认为你的错误可能是由于r.someFunctionInR()的返回类型 - 是否有可能返回一个NULL值向量?您是否尝试过打印result的值?如果这不起作用,您可能会分享someFunctionInR()