1

当我尝试编写dgcMatrix使用in30 000x80 000时:rhdf5Rstudio

h5writeDataset(as.matrix(dge_cut), file, 'rawcounts')

我收到错误消息:

H5Dcreate(loc$H5Identifier, dataset, 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 ,

文件肯定存在并打开。

sessionInfo()

R version 3.5.1 (2018-07-02)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS High Sierra 10.13.4

我不明白为什么会这样。任何建议将不胜感激。

4

1 回答 1

2

在尝试保存包含约 11 亿个条目的向量时,我遇到了类似的问题。该问题似乎与压缩块太大有关,默认块大小是正在保存的数据集的尺寸。对我有用的修复方法是首先创建数据集并将块设置为更小的值。您可以查看是否运行类似以下内容:

h5createDataset(file, 'rawcounts', c(30000, 80000), chunk = c(1000, 1000))
h5writeDataset(as.matrix(dge_cut), file, 'rawcounts')

1000 x 1000 可能不是最好的块大小选择,但它是一个开始的地方。

于 2018-11-27T05:19:34.287 回答