[R-sig-Geo] reading select values from a binary file

rick reeves reeves at nceas.ucsb.edu
Wed Dec 9 19:20:53 CET 2009

Hello All:
Faced with a similar challenge, and NOT wanting to resort to writing a C 
language function
employing fseek(), I just used two readBin calls: One to read (and 
implicitly discard) data up
to the spot I actually wanted to read, and a second call to read the 
desired information.
here is a code sample:

                      fileCon = file(sTsFileName,"rb")
# Offset has been calculated above: number of NumericByte-sized elements 
# the data of interest.
                      if (iOffset > 0)

                         TestVec = readBin(fileCon,numeric(),size = 
                      dTimeSeries = readBin(fileCon,numeric(),size = 

Crude, but effective. I WIS that we could add a seekBin() function that 
positions the file pointer
to the desired spot.

Hope this helps,
Rick R

Barry Rowlingson wrote:
> On Wed, Dec 9, 2009 at 4:58 PM, Jonathan Thayn <jthayn at ilstu.edu> wrote:
>> Hopefully there is a simple solution to this problem. I process really large satellite images in R and, in order to not offend the memory-limitation demi-gods, I open each row of the imagery one at a time, process it, write the results, and then open the next line. I use readBin() to open each line.  For examaple, say I have the following file:
>> writeBin(1:20,con="desktop/temp.bip",size=2,endian="big")
>> which I can open using readBin():
>> readBin("desktop/temp.bip","integer",size=2,endian="big",n=20)
>> Now I want to open select values from the binary file, not a complete line.  Say I want to read values 3, 7, and 10, process them, write the result, and then read values 4, 5, and 17.  How do I direct readBin to those specific values? Thanks.
>  You need to seek help. Or help(seek). Yes really.
> Barry

Rick Reeves
Scientific Programmer/Analyst and Data Manager
National Center for Ecological Analysis and Synthesis
UC Santa Barbara
805 892 2533

More information about the R-sig-Geo mailing list