R和HDF5麻烦

9 r hdf5

我试图将一个hdf5加载到R并遇到一些问题.以下是我配置环境的步骤:

  • 在Mac OS X 10.6上的R 2.10.0(x64)
  • hdf5 1.8.3通过macports安装
  • 来自CRAN的hdf5_1.6.9.tar.gz

我怀疑我遇到的问题与我的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"/"{DATASET"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,33554432,67108864,134217728,(28):268435456,536870912,1073741824}}}}

有什么想法吗?

提前致谢.

jim*_*myb 6

您也可以在CRAN上试用h5r包.该软件包使用新的hdf5库,并提供比hdf5库更多的功能.


rcs*_*rcs 2

使用verbosityin 参数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"
Run Code Online (Sandbox Code Playgroud)