4

バイナリ ファイルを R に読み込もうとしていますが、このファイルにはバイナリ コードで記述されたデータ行があります。したがって、1 つの列に属する 1 つの完全なデータ セットではなく、データの行として格納されます。私のデータは次のようになります。

Bytes 1-4:            int        ID
Byte 5:               char       response character
Bytes 6-9:            int        Resp Dollars
Byte 10:              char       Type 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
4

1 に答える 1

7

ファイルを未加工ファイルとして開き、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

于 2012-11-13T02:21:34.483 に答える