我目前正在使用
Matrix::solve()
尝试反转 90000 x 90000 矩阵。内存不是问题,因为我可以访问集群。但是 Matrix::solve()
给出了错误:
Error in .local(a, b = b, ...) :
attempt to construct sparse matrix with more than 2^31-1 nonzero elements
还有另一个 R 包可以使用吗
虚拟类
p
和CsparseMatrix
的RsparseMatrix
槽使用R的32位整数类型,不能表示大于.Machine[["integer.max"]]
的正整数(目前总是2^31-1)。 p
槽的最后一个元素是稀疏矩阵中存储的条目数。推论是 CsparseMatrix
和 RsparseMatrix
不能存储超过 2^31-1 的条目。
所以,是的,如果需要超过 2^31-1 的条目,您应该避免计算逆函数,或者至少避免尝试使用这些类来表示逆函数。如果/一旦 R 引入 64 位整数类型,情况有望得到改善,但在此之前可能不会。