R.utils (version 1.1.1)

readBinFragments: Reads binary data from disjoint sections of a connection or a file

Usage

## S3 method for class 'default}(con, what, idxs=1, size=NA, ..., verbose=FALSE)':
readBinFragmentsundefined

 Reads binary data from disjoint sections of a connection or a file.

 con{A connection or the pathname of an existing file.}
   what{A character string or an object specifying the the
     data type (mode()) to be read.}
   idxs{A vector of (non-duplicated) indices or a Nx2 matrix
     of N from-to index intervals specifying the elements to be read.}
   size{The size of the data type to be read. If NA, the natural
    size of the data type is used.}
   ...{Additional arguments passed to readBin().}
   verbose{A logical or a Verbose object.}

 Returns a vector of the requested mode().

 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Create a data file
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
data <- 1:255
size <- 2
pathname <- tempfile("exampleReadBinFragments")
writeBin(con=pathname, data, size=size)


# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Read and write using index vectors
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Read every 16:th byte in the file
idxs <- seq(from=1, to=255, by=16)
x <- readBinFragments(pathname, what="integer", size=size, signed=FALSE, idxs=idxs)
stopifnot(identical(x, data[idxs]))
print(x)

# Update every 16:th byte in the file
x0 <- x
idxs <- seq(from=1, to=255, by=16)
writeBinFragments(pathname, idxs=idxs, rev(x), size=size)
x <- readBinFragments(pathname, what="integer", size=size, signed=FALSE, idxs=idxs)
print(x)
stopifnot(identical(rev(x0), x))

# Update every 16:th byte in the file
idxs <- seq(from=1, to=255, by=16)
writeBinFragments(pathname, idxs=idxs, rev(x), size=size)
x <- readBinFragments(pathname, what="integer", size=size, signed=FALSE, idxs=idxs)
print(x)
stopifnot(identical(x0, x))

# Read the complete file
x <- readBin(pathname, what="integer", size=size, signed=FALSE, n=length(data))
stopifnot(identical(x, data))


# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Clean up
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
file.remove(pathname)

 [object Object]

 writeBinFragments().


IO

Arguments