feather中的64位整数支持
R中的包能否支持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位有效负载的“
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进行初始转换。因此,网状结构可能会有所帮助。