2016-03-31 1 views
0

Bien que cela puisse sembler similaire à une question déjà posée: is-it-possible-to-update-dataset-dimensions-in-hdf5-file-using-rhdf5-in-r mais ils ne sont pas exactement les mêmes.Comment pouvons-nous avoir des dimensions illimitées pour un ensemble de données dans le fichier HDF5 en utilisant le package RHDF5?

Dans la documentation de RHDF5, il est écrit que nous pouvons définir les dimensions maximales qu'un jeu de données peut avoir au moment où le jeu de données est créé en utilisant h5createDataset() (en utilisant le paramètre maxdims). Mais que se passe-t-il si nous ne connaissons pas les dimensions de l'ensemble de données à l'avance, par ex. nous pourrions avoir une situation où la taille de l'ensemble de données augmente continuellement et, par conséquent, nous n'avons aucune idée des dimensions maximales qu'un ensemble de données peut atteindre.

Dans la réponse à la question mentionnée ci-dessus, il a été mentionné que cela peut être fait à l'aide de l'espace de données et des constantes HDF5.

Quelqu'un peut-il donner une idée de la façon dont les constantes HDF5 et l'espace de données peuvent être utilisés pour le faire?

Répondre

0

Tout en faisant un peu d'expérimentation avec la fonction h5createDataset(), j'ai trouvé un moyen de le faire:

> library(rhdf5) 

> fid <- H5Fcreate('test.h5') 

> h5createGroup(fid,'1') 
[1] TRUE 

> h5createDataset(fid,'1/1',dims = c(2,2,2),maxdims = c(Inf,Inf,Inf)) 
[1] TRUE 
Warning message: 
    In H5Screate_simple(dims, maxdims) : 
    NAs introduced by coercion to integer range 

> arr <- array(c(1:8),c(2,2,2)) 

> h5write(arr,fid,'1/1') 

> h5read(fid,'1/1') 
, , 1 

    [,1] [,2] 
[1,] 1 3 
[2,] 2 4 

, , 2 

    [,1] [,2] 
[1,] 5 7 
[2,] 6 8 

S'il vous plaît me corriger si je me trompe quelque part ou s'il y a une meilleure méthode pour le faire.