我们如何使用 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
如有错误或有更好的方法请指正。
虽然它可能看起来与已经存在的问题相似: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
如有错误或有更好的方法请指正。