提问者:小点点

获取大密矩阵inR的特征值


我有一个大矩阵(36169*36169),正式类'dgCMatrix'R包“Matrix”。

我需要特征值的和,所以我需要计算特征值或这个矩阵的轨迹。

我试图将矩阵转换为'正常'矩阵格式使用as.矩阵(),能够使用matrix. trace().这里我有内存问题,当试图转换文件我得到错误消息:Cholmod error'内存溢出'at file… /Core/cholmod_memory.c,

下一步,我寻找直接获取dgcMatrix对角线值(trace)的方法,现在我发现我可以使用

Diag签名(x="dgCMatrix")在Matrix包中,以及setMethod,但我还没有找到如何使用它的示例。

这里是否有示例代码显示此工作原理或任何其他解决方案?


共2个答案

匿名用户

试试这个:

library(Matrix)

set.seed(123)
M <- as(matrix(rnorm(4), 2), "dgCMatrix") # test data

sum(diag(M))
[1] -0.4899673

匿名用户

我认为你需要的只是sum(diag(M))

set.seed(1)
M <- matrix(rnorm(10000), 100, 100)

E <- eigen(M)
sum(Re(E$values)); sum(diag(M)) # equal