【问题标题】:Managing a Big Matrix in R在 R 中管理大矩阵
【发布时间】:2013-07-02 20:16:28
【问题描述】:

R - 我有一个双精度方阵 62589x62589,当我将矩阵保存到 Rdata 对象时,它是 28GB,这是一个疯狂的大小还是相对正常,有什么办法解决这个问题吗?

【问题讨论】:

  • 请记住,这几乎是 40 亿 倍。
  • 你需要这么大的矩阵做什么?
  • @krlmlr 这是基因组微阵列数据,我已经对其进行了一些分析,并且我刚刚运行了一个 Pearson Correlation,它生成了一个包含 62589 个元模式的方阵,因此尺寸很大
  • @user2253047:如果您可以将足够接近零的单元格归零,那么稀疏矩阵方法应该适合您。但是,您应该在创建矩阵时这样做。
  • 只是为了添加到其他 cmets,我强烈怀疑您的矩阵接近稀疏。如果不是,那么您基本上得到了完全不相关(或完全相关),这无论如何都不值得保存。

标签: r memory matrix storage


【解决方案1】:

如果它是一个密集矩阵,那么您无能为力。这个矩阵的存储要求大致是

6 * 6 * 10^4 * 10^4 * 8 字节 = 288 * 10^8 字节 = 28.8 GB。

8 字节是double 的大小。您可以使用single 值,这将大小减半。

对于sparse matrices,Douglas Bates 和 Martin Maechler 的 Matrix 包是您的朋友。

【讨论】:

  • R 没有单一类型,尽管 ff 包提供了它们以及一般的内存不足支持。
【解决方案2】:

我会确保您已经研究过专为微阵列数据设计的 R 软件包。例如,Bioconductor 有用于微阵列的软件包 (http://www.bioconductor.org/help/workflows/arrays/)。当然还有其他人在那里。如果它们被设计用于处理类似的大型数据集,那么这些软件包可能已经解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    • 2013-10-22
    • 2012-09-04
    相关资源
    最近更新 更多