X-Git-Url: https://git.auder.net/?p=epclust.git;a=blobdiff_plain;f=epclust%2FR%2Fde_serialize.R;h=242e23a0b496b8ccf33134facf3c617c7c56af19;hp=682db53c18a2c129af70431b5d9dc85b0c192331;hb=8702eb86906bd6d59e07bb887e690a20f29be63f;hpb=86223e279a954d946ae641888f5107ed9feb6217 diff --git a/epclust/R/de_serialize.R b/epclust/R/de_serialize.R index 682db53..242e23a 100644 --- a/epclust/R/de_serialize.R +++ b/epclust/R/de_serialize.R @@ -62,12 +62,16 @@ serialize = function(data_ascii, data_bin_file, nb_per_chunk, 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 }