我正在使用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?
答案 0 :(得分:4)
尝试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值向量?您是否尝试过打印result
的值?如果这不起作用,您可以分享someFunctionInR()
的内容。