Je suis en train d'enregistrer un tableau en tant que fichier HDF5 en utilisant R, mais n'ayant pas de chance.Enregistrement dans hdf5save crée un fichier illisible
Pour tenter de diagnostiquer le problème, j'ai exécuté example(hdf5save)
. Cela a créé avec succès un fichier HDF5 que je pouvais lire facilement avec h5dump
.
Lorsque j'ai ensuite exécuté le code R manuellement, j'ai constaté que cela ne fonctionnait pas. Le code que j'ai exécuté était exactement le même que celui qui est exécuté dans le script d'exemple (à l'exception d'un changement de nom de fichier pour éviter l'écrasement). Voici le code:
(m <- cbind(A = 1, diag(4)))
ll <- list(a=1:10, b=letters[1:8]);
l2 <- list(C="c", l=ll); PP <- pi
hdf5save("ex2.hdf", "m","PP","ll","l2")
rm(m,PP,ll,l2) # and reload them:
hdf5load("ex2.hdf",verbosity=3)
m # read from "ex1.hdf"; buglet: dimnames dropped
str(ll)
str(l2)
et voici le message d'erreur de h5dump
:
h5dump error: unable to open file "ex2.hdf"
Quelqu'un at-il des idées? Je suis complètement perdu.
Merci
Merci pour vos solutions, je pense que votre deuxième option me convient le mieux. Je n'ai pas trouvé le programme hdf5tools, mais j'ai trouvé [h5utils] (http://ab-initio.mit.edu/wiki/index.php/H5utils) qui contient un programme appelé [h5fromtxt] (http: //ab-initio.mit.edu/h5utils/h5fromtxt-man.html) qui semble faire ce que je veux. – matt
@Matt J'ai mis à jour ma réponse, et je voulais dire h5utils, un très bon ensemble d'outils. J'ai trouvé que 'h5totxt test.h5' fonctionnait sur des fichiers pour lesquels' h5load ('test.h5') 'ne l'avait pas fait (donc l'écriture n'est illisible que par R, pas forcément corrompue). –
Il semble que la commande 'hdf5save' ne fonctionne que de temps en temps, et il ne semble pas y avoir de rime ou de raison. Au moins (grâce à vous) nous avons maintenant un exemple de code reproductible que nous pouvons/nous pouvons apporter à leur bug tracker (ou essayer de le réparer, je suppose que c'est Open Source). Je suis toujours au travail maintenant, mais je le ferai quand je rentrerai à la maison. Cheers, – matt