Вопрос

Я пытаюсь загрузить HDF5 в R и столкнуться с некоторыми проблемами. Вот шаги, которые я предпринял для настройки своей среды:

  • R 2.10.0 (x64) на Mac OS X 10.6
  • HDF5 1.8.3 установлен через MacPorts
  • hdf5_1.6.9.tar.gz от Cran

Я подозреваю, что проблема, с которой я становлюсь, связана с несовместимостью в моей версии HDF5 и той, которую ожидает модуль R. Для полноты вот как я установил модуль R:

R Cmd Install-configure-Vars = 'cppflags = -i/opt/local/include'-configure-args = '-with-hdf5 =/opt/local' hdf5_1.6.9.tar.gz

Это строит нормально. Библиотека, кажется, загружается без проблем, но данные не возвращаются, когда я пытаюсь загрузить файл:

Библиотека (HDF5)

HDF5load ("test.h5")

НУЛЕВОЙ

Пока что,

OSX: Data Scott $ h5dump test.h5 hdf5 "test.h5" {group " /" {dataet "dset" {datatype h5t_std_i32le dataspace simple {(31) / (31)} data {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, 335544432, 67108864, 134217728, (28): 268435456, 536870912, 1073741824}}}}}}}}}}}}}}}}}}}}}}}}}}}

Какие-нибудь мысли?

Заранее спасибо.

Это было полезно?

Решение

Использовать verbosity аргумент в hdfload() и проверьте свою среду, используя ls(). hdfload() имеет побочный эффект, он загружает таблицы в текущую среду, NULL это возвратное значение по умолчанию. Если вы используете аргумент load=TRUE Объекты возвращаются как компоненты названного списка:

  • load: Логическое значение. Если «false», объекты возвращаются как компоненты именованного списка. Если «true» (по умолчанию), объекты загружаются как отдельные переменные со своими собственными именами - функция в этом случае ничего не возвращает.

На моем Mac все хорошо работает с той же настройкой.

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"

Другие советы

Вы также можете попробовать пакет H5R на Cran. Этот пакет использует новые библиотеки HDF5 и предоставляет больше функциональности, чем библиотека HDF5.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top