当我尝试使用dgcMatrix
中的30 000x80 000
来写rhdf5
的{{1}}时:
Rstudio
我遇到了错误:
H5Dcreate中的错误(loc $ H5Identifier,数据集,tid,sid,dcpl = dcpl): HDF5。数据集。无法初始化对象。 另外:警告消息: 在h5createDataset(h5loc,name,dim,storage.mode = storage.mode(obj),中: 您使用压缩和分块创建了一个大型数据集。块的大小等于数据集的大小。如果要读取数据集的子集,则应测试较小的块大小以缩短读取时间。使用showWarnings = FALSE关闭此警告。 H5Dopen(h5loc,name)中的错误:HDF5。数据集。找不到对象。 h5writeDatasetHelper(obj = obj,h5dataset = h5dataset,index = index,错误: 找不到对象“ h5dataset” h5writeDatasetHelper(obj = obj,h5dataset = h5dataset,index = index,错误: 找不到对象“ h5dataset” 另外:警告消息: 在is(h5id,“ H5IdComponent”)中:重新启动中断的promise评估 H5Dclose(h5dataset)中的错误:找不到对象“ h5dataset”
文件肯定存在并打开。
h5writeDataset(as.matrix(dge_cut), file, 'rawcounts')
:
sessionInfo()
我不明白为什么会这样。任何建议将不胜感激。
答案 0 :(得分:1)
当我尝试保存一个约有11亿个条目的向量时,我遇到了类似的问题。问题似乎与压缩块太大有关,默认块大小是要保存的数据集的尺寸。对我有用的解决方法是先创建数据集,然后将块设置为较小的值。您可以查看是否运行了以下内容:
h5createDataset(file, 'rawcounts', c(30000, 80000), chunk = c(1000, 1000))
h5writeDataset(as.matrix(dge_cut), file, 'rawcounts')
不是最好选择1000 x 1000的块大小,而是开始的地方。