读取存储在HDF5中的数据帧

时间:2014-01-04 23:59:32

标签: r hdf5

我有一个大型数据框(126041个Obs。的604个变量)。我是HDF5格式的新手。我保存HDF5文件如下:

writeH5DataFrame(myData,"C:/myDir/myHDF5.h5",overwrite=T)

  1. 如何读取数据帧?似乎没有任何readH5DataFrameloadH5DataFrame功能?

  2. 此外,writeH5DataFrame需要相当长的时间,可能是因为列数很多(在这种情况下为604)。该文档提到“每列的数据存储在一个单独的H5Dataset。” - 不确定这是否是长时间采用的原因。有没有办法加快以HDF5格式编写DataFrame?

1 个答案:

答案 0 :(得分:2)

我不知道您使用的是哪个软件包,但使用rhdf5软件包,看起来很容易编写/读取hdf5文件。

## uncomment the 2 lines after to install the package
## source("http://bioconductor.org/biocLite.R")
## biocLite("rhdf5")
library(rhdf5)
## empty HDF5 file : the data base
h5createFile("myhdf5file.h5")
## create group hierarchy. : tables or datasets
h5createGroup("myhdf5file.h5","group1")
h5createGroup("myhdf5file.h5","group2")

## save a matrix 
A = matrix(1:10,nr=5,nc=2)
h5write(A, "myhdf5file.h5","group1/A")

## save an array with attribute 
B = array(seq(0.1,2.0,by=0.1),dim=c(5,2,2))
attr(B, "scale") <- "liter"
h5write(B, "myhdf5file.h5","group2/B")
## check the data base
h5ls("myhdf5file.h5")

   group   name       otype  dclass       dim
0       / group1   H5I_GROUP                  
1 /group1      A H5I_DATASET INTEGER     5 x 2
2       / group2   H5I_GROUP                  
3 /group2      B H5I_DATASET   FLOAT 5 x 2 x 2

 ## read A and B
 D = h5read("myhdf5file.h5","group1/A")
 E = h5read("myhdf5file.h5","group2/B")