我们如何使用 RHDF5 包为 HDF5 文件中的数据集设置无限维度?

How can we have unlimited dimensions for a dataset in HDF5 File using RHDF5 package?

虽然它可能看起来与已经存在的问题相似:is-it-possible-to-update-dataset-dimensions-in-hdf5-file-using-rhdf5-in-r 但它们并不完全相同。

在 RHDF5 文档中写道,我们可以使用 h5createDataset()(使用 maxdims 参数)定义在创建数据集时数据集可以具有的最大维度。但是如果我们事先不知道数据集的维度怎么办?我们可能会遇到数据集大小不断增加的情况,因此我们不知道数据集可以达到的最大维度。

在上述问题的回答中提到可以借助数据空间和HDF5常量来完成。

任何人都可以提供一些有关如何使用 HDF5 常量和数据空间的想法吗?

在对函数 h5createDataset() 进行一些实验时,我找到了一种方法:

> library(rhdf5)

> fid <- H5Fcreate('test.h5')

> h5createGroup(fid,'1')
[1] TRUE

> h5createDataset(fid,'1/1',dims = c(2,2,2),maxdims = c(Inf,Inf,Inf))
[1] TRUE
Warning message:
  In H5Screate_simple(dims, maxdims) :
  NAs introduced by coercion to integer range

> arr <- array(c(1:8),c(2,2,2))

> h5write(arr,fid,'1/1')

> h5read(fid,'1/1')
, , 1

     [,1] [,2]
[1,]    1    3
[2,]    2    4

, , 2

     [,1] [,2]
[1,]    5    7
[2,]    6    8

如有错误或有更好的方法请指正。