getDataInFile = function(indices, data_bin_file, nbytes=4, endian=.Platform$endian)
{
data_bin = file(data_bin_file, "rb")
+ data_size = file.info(data_bin)$size
data_length = readBin(data_bin, "integer", 1, 8, endian)
#Ou t(sapply(...)) (+ rapide ?)
data_ascii = do.call( rbind, lapply( indices, function(i) {
- ignored = seek(data_bin, 8+((i-1)*data_length*nbytes))
+ offset = 8+(i-1)*data_length*nbytes
+ if (offset > data_size)
+ return (vector("double",0))
+ ignored = seek(data_bin, offset)
readBin(data_bin, "double", n=data_length, size=nbytes)
} ) )
close(data_bin)
- data_ascii
+ if (ncol(data_ascii)>0) data_ascii else NULL
}