如何从二进制文件中读取800万个64位整数的向量?
我的第一个想法是:
f <- file('foo.dat', 'rb')
readBin(f, "integer", size=8, n=8000000)
然而,这会将数字截断为32位(在64位平台上使用R 3.2.3。)
我认为缺少64位数字支持是基本R的限制,并且解决方案是bit64
包。但是,我无法找到使用bit64
和readBin
从二进制文件中读取64位值的示例。
(我在StackOverflow和R邮件列表上发现了许多相关问题,但总是没有解决方案。)
编辑:
readBin
的文档似乎暗示本地支持64位数字,但这似乎不是真的。数字被截断为32位。测试用例:
R version 3.2.3 (2015-12-10) -- "Wooden Christmas-Tree"
Copyright (C) 2015 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
> f <- file('/dev/urandom', 'rb')
> readBin(f, "integer", size=8, n=1)
[1] 1314660028
> .Machine$sizeof.long == 8
[1] TRUE
> .Machine$sizeof.longlong == 8
[1] TRUE
EDIT2:
糟糕。我刚刚读到dplyr不支持integer64。所以即使我设法读取我的64位数据,我也无法用它做我想做的事情。那好吧。必须寻找不同的解决方案。