【发布时间】:2021-01-18 22:40:52
【问题描述】:
在阅读Mapping rpy2 objects to arbitrary python objects 之后,我认为以下内容可以将 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)
但是,Trace 失败了:
NotImplementedError: Conversion 'py2rpy' not defined for objects of type '<class 'NoneType'>'
如何处理?
【问题讨论】:
-
这能回答你的问题吗? Convert NULL from Python to R using rpy2
-
不,很遗憾。在转换器函数中使用 robjs.NULL 得到相同的结果
-
这是一个很好的问题,因为 rpy2 用户可能希望将他们的
Nones 自动转换为NA、NULL或其他 R 构造。转换器在这里是正确的模式,与@PacketLoss 链接的问题中的手动转换不同