#number of items always on 8 bytes
writeBin(0L, data_bin, size=8, endian=endian)
if ( is_matrix )
- data_length = ncol(data_ascii)
+ data_length = nrow(data_ascii)
else #connection
{
data_line = scan(data_ascii, double(), sep=sep, nlines=1, quiet=TRUE)
if ( is_matrix )
{
data_chunk =
- if (index <= nrow(data_ascii))
- as.double(t(data_ascii[index:min(nrow(data_ascii),index+nb_per_chunk-1),]))
+ if (index <= ncol(data_ascii))
+ as.double(data_ascii[,index:min(nrow(data_ascii),index+nb_per_chunk-1)])
else
double(0)
index = index + nb_per_chunk
data_bin = file(data_bin_file, "rb")
data_size = file.info(data_bin_file)$size
data_length = readBin(data_bin, "integer", n=1, size=8, endian=endian)
- #Ou t(sapply(...)) (+ rapide ?)
- data_ascii = do.call( rbind, lapply( indices, function(i) {
+ data_ascii = sapply( indices, function(i) {
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, endian=endian)
- } ) )
+ } )
close(data_bin)
if (ncol(data_ascii)>0) data_ascii else NULL
}