TODO: args, et finir tests; relancer
[epclust.git] / epclust / R / de_serialize.R
index b6684d2..f04c13a 100644 (file)
@@ -45,7 +45,7 @@ binarize = function(data_ascii, data_bin_file, nb_per_chunk,
                #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)
@@ -61,8 +61,8 @@ binarize = function(data_ascii, data_bin_file, nb_per_chunk,
                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
@@ -113,14 +113,13 @@ getDataInFile = function(indices, data_bin_file, nbytes=4, endian=.Platform$endi
        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
 }