代码之家  ›  专栏  ›  技术社区  ›  Nikita Vlasenko

无法写入hdf5文件:H5Dcreate中出错

  •  0
  • Nikita Vlasenko  · 技术社区  · 7 年前

    当我试图写一篇文章的时候 dgcMatrix 30 000x80 000 使用 rhdf5 在里面 Rstudio :

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

    我得到一个错误:

    此外:警告信息: 您使用压缩和分块创建了一个大型数据集。区块大小等于数据集维度。如果要读取数据集的子集,应该测试较小的数据块大小以缩短读取时间。使用showWarnings=FALSE关闭此警告。 H5Dopen(h5loc,name)中出错:HDF5。数据集。找不到对象。 h5writeDatasetHelper中出错(obj=obj,h5dataset=h5dataset,index=index,: h5writeDatasetHelper中出错(obj=obj,h5dataset=h5dataset,index=index,: 找不到对象“h5dataset” 此外:警告信息: is(h5id,“H5IdComponent”):重新启动评估 H5Dclose(h5dataset)中出错:未找到对象“h5dataset”

    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
    

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

    1 回复  |  直到 7 年前
        1
  •  2
  •   B. McV    7 年前

    我在试图保存一个有11亿条目的向量时遇到了类似的问题。问题似乎与压缩块太大有关,默认块大小是保存的数据集的维度。一个对我有效的修复方法是首先创建数据集,然后将数据块设置为更小的值。您可以看到是否运行以下类似的操作:

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