2009-11-12 10 views
9

Sto provando a caricare un hdf5 in R e in alcuni problemi. Ecco i passaggi che ho svolto per configurare il mio ambiente:R e HDF5

  • R 2.10.0 (x64) su Mac OS X 10.6
  • HDF5 1.8.3 installato tramite MacPorts
  • hdf5_1.6.9.tar.gz da CRAN

Sospetto che il problema che ho riscontrato riguardi incompatibilità nella mia versione di HDF5 e quella che il modulo R si aspetta. Per completezza ecco come ho installato il modulo R:

R CMD INSTALLARE --configure-Vars = 'CPPFLAGS = -I/opt/local/include' --configure-args = '- con-HDF5 =/opt/local 'hdf5_1.6.9.tar.gz

Questo costruisce bene. La biblioteca sembra caricare senza alcun problema, ma nessun dato viene restituito quando provo a caricare un file:

libreria (HDF5)

hdf5load ("test.h5")

NULL

Eppure,

osx: dati scott $ h5dump test.h5 HDF5 "test.h5" { GRUPPO "/" { DATASET "DSET" { DATATYPE H5T_STD_I32LE DATASPACE SEMPLICE {(31)/(31)} DATI { (0): 1, 2, 4, 8, 16, 32, 64, 128 , 256, 512, 1024, 2048, 4096, 8192, (14): 16384, 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, (22): 4194304, 8388608, 16777216, 33554432, 67108864, 134217728 , (28): 268.435.456, 536.870.912, 1073741824 }} }}

Qualche idea?

Grazie in anticipo.

+0

Questo non risponde alla tua domanda, ma faccio solo notare che il build del Mac su R 2.10 non è riuscito: http://www.r-project.org/nosvn/R.check/r-release-macosx-ix86 /hdf5-00check.html. – Shane

+0

Questo è vero, ma fornisce pochi motivi per cui la compilazione ha avuto esito negativo. L'ho creato manualmente senza errori o avvisi ... –

+0

Senza voler sembrare paternalistico, sei sicuro che hdfload stia cercando nella directory corretta, vero? Sono venuto più volte con quel genere di cose. –

risposta

2

Utilizzare l'argomento verbosity in hdfload() e verificare l'ambiente utilizzando ls(). hdfload() ha un effetto collaterale, carica le tabelle nell'ambiente corrente, NULL è il valore di ritorno predefinito. Se si utilizza l'argomento load=TRUE gli oggetti vengono restituiti come i componenti di un elenco di nome:

  • load: un valore logico. Se "FALSE", , gli oggetti vengono restituiti come componenti di un elenco con nome. Se 'TRUE' (impostazione predefinita), gli oggetti vengono caricati come variabili individuali con i propri nomi - la funzione non restituisce nulla in questo caso.

Sul mio Mac tutto funziona bene con la stessa configurazione.

R> rm(list=ls()) 
R> ls() 
character(0) 
R> hdf5load("TestHDF5.h5", verbosity=3) 
hdf5_global_verbosity=3 load=1 
Processing object: Dataset0 ...... its a dataset...Dataset has ID335544326 
Dataset has tid 201326902 
Dataset has space id 268435467 
Dataset has rank 1 
Dataset has dims/maxdims: 1/1 
Allocating vector with rank=1 dim=1 
calling vector_io. Hangs here with big datsets 
Setting buffer size in plist 
About to read with bufsize = 50 
in string_ref: count=1, size=25 srcbf=25 
leaving string_ref 
Done read 
in vector_io: permuting 
in vector_io: tidying 
Phew. Done it. calling iinfo->add 
Rank > 1 or not VECSXP 
Calling hdf5_load_attributes 
back from hdf5_load_attributes 
...Finished dataset 
Processing object: Table0 ...... its a dataset...Dataset has ID335544327 
Dataset has tid 201326906 
Dataset has space id 268435468 
Dataset has rank 1 
Dataset has dims/maxdims: 1/1 
Dataset has type = VECSXP and rank 1 
Reading... 
....done 
in string_ref: count=1, size=25 srcbf=25 
leaving string_ref 
...Finished dataset 
NULL 
R> ls() 
[1] "Dataset0" "Table0" 
6

È anche possibile provare il pacchetto h5r su CRAN. Questo pacchetto utilizza le nuove librerie hdf5 e offre più funzionalità della libreria hdf5.

+0

Non sembra essere su CRAN, trovato su [r-forge] (http://r-forge.r-project.org/projects/h5r /) –

+0

Sì, mi dispiace per quello. È su r-fucina. R-forge era solito offrire funzionalità per ottenere cose su CRAN, ma non so dove sia andato. – jimmyb