R中巨大的原始基质

Ben*_*gel 2 r

以下代码导致内存错误:

diag(1:100000)
Run Code Online (Sandbox Code Playgroud)

有没有替代diag允许产生巨大的对角矩阵?

mus*_*rat 6

更长的答案:我建议不要创建对角矩阵,因为在大多数情况下你可以不用它.为了清楚起见,请考虑最典型的矩阵运算:

  1. 将对角矩阵乘以D矢量v以产生Dv.相反,保持基质,保持你的"矩阵"作为载体d对角线元素,然后乘以d通过按元素v.结果相同.
  2. 反转矩阵.同样,简单:反转每个元素(当然,仅对于对角矩阵,这通常是正确的反转).
  3. 各种分解/特征值/决定因素/跟踪.同样,这些都可以在矢量上完成d.

简而言之,虽然它需要在代码中引起一些注意,但您始终可以将对角矩阵表示为向量,这应该可以解决您的内存问题.

更短的回答:现在,说了这么多,当然人们已经使用稀疏矩阵隐式地实现了上述步骤,这些步骤完成了上述步骤.在R中,Matrix包对于稀疏矩阵很有用:https://cran.r-project.org/web/packages/Matrix/Matrix.pdf