我使用hdf5
包编写了rhdf5
个文件。 h5ls(myHDF5,all=TRUE)
的输出如下:
group name otype dclass dim
0 / char5 H5I_DATASET STRING 1867124
1 / char6 H5I_DATASET STRING 1867124
2 / char7 H5I_DATASET STRING 1867124
3 / dims H5I_DATASET INTEGER 2
4 / headers H5I_DATASET STRING 212
5 / int H5I_DATASET INTEGER 233390500
6 / intorder H5I_DATASET INTEGER 125
7 / real H5I_DATASET FLOAT 156838416
8 / realorder H5I_DATASET INTEGER 84
如果我在headers
文件中读取myHDF5
对象(字符串向量),如下所示:headers<-h5read(myHDF5,"headers")
,它可以正常工作。
但如果我尝试按如下方式读取更大的字符串向量:char5<-h5read(myHDF5,"char5")
则R崩溃(R Studio
重新加载)。
之前已存储较大的字符串数组char5
,如下所示:
nr<-length(char5)
mxsize<-max(nchar(char5))
h5createDataset(myHDF5,"char5",storage.mode="character",level=9,dims=nr,chunk=10000,size=mxsize)
h5write(char5,myHDF5,"char5)
虽然较小的字符串数组headers
先前已按如下方式存储:
nc<-length(headers)
mxsize<-max(nchar(headers))
h5createDataset(myHDF5,"headers",storage.mode="character",level=9,dims=nc,chunk=nc,size=mxsize)
h5write(headers,myHDF5,"headers")
主要区别在于使用的chunk
大小值。我将较大字符串向量的chunk
大小更改为与dims
相同,即chunk=nr
,并且R仍然崩溃。
为什么R会崩溃?
注意:如果我从myHDF5
文件读取整数或浮点数据,R不会崩溃。
答案 0 :(得分:1)
我遇到了同样的问题。一个简单的解决方案虽然不完美,但使用的是“h5r”包:
library(h5r)
f <- H5File(h5FilePath)
g <- getH5Group(f, "/")
d <- getH5Dataset(g, "stringArray")[]