如何将None转换为R NULL

1 人关注

阅读后 将rpy2对象映射为任意的python对象 我想下面的内容可以让Python的None转换为R的NULL。

import rpy2.robjects.conversion as cv
import rpy2.robjects as robjs
from rpy2.robjects import default_converter
from rpy2.robjects.packages import importr
r_base = importr("base")
def _none2null(none_obj):
    return robjs.r("NULL")
none_converter = cv.Converter("None converter")
none_converter.py2rpy.register(None, _none2null)
with cv.localconverter(default_converter + none_converter):
    filesl = r_base.list_files(pattern=None)

然而,它在追踪中失败了。

NotImplementedError: Conversion 'py2rpy' not defined for objects of type '<class 'NoneType'>'

如何处理这个问题?

3 个评论
这是否回答了你的问题? Convert NULL from Python to R using rpy2
不,很遗憾。在转换器函数中使用robjs.NULL会得到相同的结果
这是一个很好的问题,因为rpy2用户可能希望将他们的 None 自动转换为 NA NULL 或其他R结构。转换器是这里的正确模式,与@PacketLoss 链接的问题中的手动转换不同。
python
rpy2
sluque
sluque
发布于 2021-01-19
1 个回答
krassowski
krassowski
发布于 2021-01-20
已采纳
0 人赞同

Converter.register() 方法接受要转换的对象的类型作为第一个参数,但你传递了一个实例。 None NoneType 的一个实例。

NoneType = type(None)