python-在rpy2中处理Null返回

提问

我正在使用rpy2从python调用R函数.

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吗?

最佳答案

尝试rpy2.rinterface.NULL或robj.r(“ NULL”):

In [1]: from rpy2 import robjects as robj

创建一个返回NULL的R函数:

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值的向量?您是否尝试过打印结果的价值?如果这不起作用,则可以共享someFunctionInR().

评论