On Wed, Dec 9, 2009 at 6:20 PM, rick reeves <ree...@nceas.ucsb.edu> wrote: > 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 > preceeding > # the data of interest. > # > if (iOffset > 0) > { > > TestVec = readBin(fileCon,numeric(),size = > iNumericBytes,n=iOffset) > } > dTimeSeries = readBin(fileCon,numeric(),size = > iNumericBytes,n=iNumElements) close(fileCon) > > Crude, but effective. I WIS that we could add a seekBin() function that > positions the file pointer > to the desired spot. >
The R seek function does this. I hadn't tested it when I posted, hoping the original poster would work it from my message. So I just now tested it: I created a file with ascii a to z in, and then: > con = file("file.tst","rb") # jump to 13th letter: > seek(con,13) [1] 0 # read it: > readBin(con,what="raw",n=1) [1] 6e # thats ascii 'n' # jump back: > seek(con,1) [1] 14 # returns where we were, we've now moved... > readBin(con,what="raw",n=1) [1] 62 # ascii 'b'. Things start at zero.... Is that what you are trying to do? Barry _______________________________________________ R-sig-Geo mailing list R-sig-Geo@stat.math.ethz.ch https://stat.ethz.ch/mailman/listinfo/r-sig-geo