读二进制文件为R(Reading binary file into R)

2019-07-03 19:21发布

我想读一个二进制文件为R,但该文件已写在二进制代码数据行。 所以它没有一个完整的一套属于一列,而不是它作为数据存储的行数据。 下面是我的数据是这样的:

字节1-4:INT ID字节5:字符响应字符的字节6-9:整数RESP元字节10:char型炭

任何人都可以帮助我弄清楚如何读取此文件为R?

嗨,大家好,

下面的代码我用尽为止。 我试了几件事情了有限的成功。 不幸的是,我不能发布任何数据在公共场所,道歉。 我是比较新的R,所以我需要在如何提高代码方面提供一些帮助。 提前致谢。

> binfile = file("File Location", "rb")
> IDvals = readBin(binfile, integer(), size=4, endian = "little")
> Responsevals = readBin(binfile, character (), size = 5)
> ResponseDollarsvals = readBin (binfile, integer (), size = 9, endian= "little")
Error in readBin(binfile, integer(), size = 9, endian = "little") : 
  size 9 is unknown on this machine
> Typevals = readBin (binfile, character (), size=4)
> binfile1= cbind(IDvals, Responsevals, ResponseDollarsvals, Typevals)
> dimnames(binfile1)[[2]]
[1] "IDvals"            "Responsevals"        "ResponseDollarsvals" "Typevals"  

> colnames(binfile1)=binfile
Error in `colnames<-`(`*tmp*`, value = 4L) : 
  length of 'dimnames' [2] not equal to array extent

Answer 1:

你可以打开该文件作为原始文件,然后发出readBin或readChar命令来获取每一行。 每个值追加到一列,当您去。

my.file <- file('path', 'rb')

id <- integer(0)
response <- character(0)
...

循环解决此块:

id = c(id, readBin(my.file, integer(), size = 4, endian = 'little'))
response = c(response, readChar(my.file, 1))
...
readChar(my.file, size = 1) # For UNIX newlines.  Use size = 2 for Windows newlines.

然后创建您的数据帧。

在这里看到: http://www.ats.ucla.edu/stat/r/faq/read_binary.htm



文章来源: Reading binary file into R
标签: r binaryfiles