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

如何使用R和位64读取64位二进制数据?,r,R,如何从二进制文件中读取800万个64位整数的向量 我的第一个想法是: f <- file('foo.dat', 'rb') readBin(f, "integer", size=8, n=8000000) 编辑2: 哎呀。我刚刚读到dplyr不支持integer64。因此,即使我设法读取我的64位数据,我也无法用它做我想做的事情。哦,好吧。必须寻找不同的解决方案。如果C-type-long的大小为8字节,或者C-type-long-long存在且大小为8字节,则可以从中读取/写入大小为8

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

我的第一个想法是:

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


哎呀。我刚刚读到dplyr不支持integer64。因此,即使我设法读取我的64位数据,我也无法用它做我想做的事情。哦,好吧。必须寻找不同的解决方案。

如果C-type-long的大小为8字节,或者C-type-long-long存在且大小为8字节,则可以从
中读取/写入大小为8的整数。
。这可能意味着问题是由发行版的编译方式造成的。如果是这样的话,您可能可以使用Revolutionr的发行版。我没有一个64位数字的文件来测试这个想法,从文档的示例中,您可以使用
.machine$sizeof.long
,例如
if(.machine$sizeof.long==8 | |.machine$sizeof.longlong==8)readBin(zz,integer(),10,size=8)
很好。我还以这种方式解释了文档。然而,实际的行为似乎是一个粗鲁的惊喜?请参阅有问题的编辑。使用
bit64
包可能会很幸运:
require(bit64)
,然后:
x@LukeGorrie在用
numeric
阅读它们之后,按照我之前发布的那样设置类
integer64
,看看你是否得到了数字。
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