Python 如何将None转换为R NULL
阅读后,我认为以下内容将允许将Python None转换为R NULL:Python 如何将None转换为R NULL,python,rpy2,Python,Rpy2,阅读后,我认为以下内容将允许将Python None转换为R NULL: 将rpy2.robjects.conversion导入为cv 将rpy2.robjects导入为robjs 从rpy2.robjects导入默认\u转换器 从rpy2.robjects.packages导入导入 r_base=importr(“base”) def _none2null(无对象): 返回robjs.r(“空”) 无转换器=cv.转换器(“无转换器”) none_converter.py2rpy.regist
将rpy2.robjects.conversion导入为cv
将rpy2.robjects导入为robjs
从rpy2.robjects导入默认\u转换器
从rpy2.robjects.packages导入导入
r_base=importr(“base”)
def _none2null(无对象):
返回robjs.r(“空”)
无转换器=cv.转换器(“无转换器”)
none_converter.py2rpy.register(none,_none2null)
使用cv.localconverter(默认\u转换器+无\u转换器):
filesl=r\u base.list\u文件(模式=None)
但是,它在跟踪时失败:
NotImplementedError:未为“”类型的对象定义转换“py2rpy”
如何处理这个问题?Converter.register()方法接受要转换的对象的类型作为第一个参数,但您传递了一个实例
None
是NoneType
的一个实例:
NoneType = type(None)
NoneType() is None # True
您需要为NoneType
定义转换,因此您只需使用:
none_converter.py2rpy.register(type(None), _none2null)
这回答了你的问题吗?不,很遗憾。在converter函数中使用robjs.NULL会得到相同的结果这是一个好问题,因为rpy2用户可能希望将其
None
s自动转换为NA
,NULL
或其他R结构。Converter是这里的正确模式,与@PacketLossThank you链接的问题中的手动转换不同,这非常有用!