feather中的64位整数支持

feather中的64位整数支持,r,int64,feather,R,Int64,Feather,R中的包能否支持64位整数 将数据集传递到feather::write_feather()时,该列将转换为64位浮点,并失去精度。我希望避免将其转换为角色 这里有一个简化的例子。在实际项目中,数据库表(使用odbc包检索)的列是合法的64位整数(如包中指定的) requireNamespace(“位64”) 路径它实际上是“复杂的”。您可能知道,R本身只有两种类型:32位整数和64位双精度 因此,为了表示64位整数,Jens在他的bit64包中做了大量工作,使用double作为64位有效负载的“

R中的包能否支持64位整数

将数据集传递到
feather::write_feather()
时,该列将转换为64位浮点,并失去精度。我希望避免将其转换为角色

这里有一个简化的例子。在实际项目中,数据库表(使用odbc包检索)的列是合法的64位整数(如包中指定的)

requireNamespace(“位64”)
路径它实际上是“复杂的”。您可能知道,R本身只有两种类型:32位整数和64位双精度

因此,为了表示64位整数,Jens在他的
bit64
包中做了大量工作,使用double作为64位有效负载的“载体”,并重新定义所有访问器功能,将其视为64位(有符号)整数。这很有效

有几个软件包本机支持它,例如
data.table
。我在创建
nanotime
时就利用了这一点——从新纪元开始,它使用64位整数表示纳秒。这也行得通:我们从不在中间转换为double,而是得到忠实的integer64表示

多年来,我也一直在关注
neticulate
,它有着非常相似的64位整数转换问题(就像Python中固有的那样),这些问题现在已经得到了普遍的解决


长话短说:你的问题更多的是对
feather
的功能要求。由于相关人员现在关注的是
arrow
,它似乎支持64位整数,您很可能会被要求转到
arrow
。或者您可以使用
数据表

上下文有帮助,谢谢。另一方面,安装依赖项需要更多的工作。但一旦安装,代码修改就很简单,只需将
feather::write_feather()
替换为
arrow::write_feather()
。我认为
data.table
不起作用,因为我正在与Python用户交换数据集(我在问题中没有指定),但可能我误解了你的最后一句话。是的。一旦您的数据在R中,您就可以使用
data.table
来存储。它不会帮助您从Python进行初始转换。因此,网状结构可能会有所帮助。