R和HDF5故障 [英] R and HDF5 Troubles

查看:133
本文介绍了R和HDF5故障的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am trying to load an hdf5 into R and running into some problems. Here are the steps I took to configure my environment:

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

我怀疑我所遇到的问题与我的HDF5版本和R模块期望的版本不兼容有关.为了完整起见,这是我安装R模块的方式:

I suspect the problem I am having relates to incompatibilities in my version of HDF5 and the one the R module expects. For completeness here is how I installed the R module:

R CMD安装--configure-vars ='CPPFLAGS = -I/opt/local/include'--configure-args ='-with-hdf5 =/opt/local'hdf5_1.6.9.tar.gz

R CMD INSTALL --configure-vars='CPPFLAGS=-I/opt/local/include' --configure-args='--with-hdf5=/opt/local' hdf5_1.6.9.tar.gz

这很好.该库似乎可以正常加载,但是当我尝试加载文件时没有数据返回:

This builds fine. The library seems to load without issue, but no data is returned when I try to load a file:

库(hdf5)

library(hdf5)

hdf5load("test.h5")

hdf5load("test.h5")

NULL

但是

osx:data scott $ h5转储test.h5 HDF5"test.h5" { 团体 "/" { 数据集"dset" { 数据类型H5T_STD_I32LE 数据空间简单{(31)/(31)} 数据 { (0):1,2,4,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 } } } }

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 } } } }

有什么想法吗?

谢谢.

推荐答案

hdfload()中使用verbosity自变量,并使用ls()检查您的环境. hdfload()有一个副作用,它将表加载到当前环境中,NULL是默认返回值.如果使用参数load=TRUE,则对象将作为命名列表的组成部分返回:

Use the verbosity argument in hdfload() and check your environment using ls(). hdfload() has a side effect, it loads the tables into the current environment, NULL is the default return value. If you use the argument load=TRUE the objects are returned as the components of a named list:

  • load:逻辑值.如果为"FALSE", 这些对象将作为返回 命名列表的组件.如果为"TRUE"(默认设置),则 对象作为具有各自变量的单个变量加载 名称-在这种情况下,该函数不返回任何内容.
  • load: A logical value. If 'FALSE', the objects are returned as the components of a named list. If 'TRUE' (the default), the objects are loaded as individual variables with their own names - the function returns nothing in this case.

在我的Mac上,使用相同的设置即可正常运行.

On my Mac everything works well with the same setup.

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"

这篇关于R和HDF5故障的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆