如何使用R和bit64读取64位二进制数据?

时间:2017-02-09 10:53:51

标签: r

如何从二进制文件中读取800万个64位整数的向量?

我的第一个想法是:

f <- file('foo.dat', 'rb')
readBin(f, "integer", size=8, n=8000000)

然而,这会将数字截断为32位(在64位平台上使用R 3.2.3。)

我认为缺少64位数字支持是基本R的限制,并且解决方案是bit64包。但是,我无法找到使用bit64readBin从二进制文件中读取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位数据,我也无法用它做我想做的事情。那好吧。必须寻找不同的解决方案。

0 个答案:

没有答案