以下代码导致内存错误:
diag(1:100000)
有没有替代diag允许产生巨大的对角矩阵?
更长的答案:我建议不要创建对角矩阵,因为在大多数情况下你可以不用它。为了清楚起见,请考虑最典型的矩阵运算:
D
乘以向量v
以产生Dv
。不要保持矩阵,而是将“矩阵”保持为对角线元素的向量d
,然后将d
元素乘以v
。结果相同。d
上完成。简而言之,虽然它需要在代码中引起一些注意,但您始终可以将对角矩阵表示为向量,这应该可以解决您的内存问题。
更短的回答:现在,说了这么多,当然人们已经使用稀疏矩阵隐式地实现了上述步骤,这些步骤完成了上述步骤。在R中,Matrix
包非常适合稀疏矩阵:https://cran.r-project.org/web/packages/Matrix/Matrix.pdf