我有一个大矩阵(36169*36169),正式类'dgCMatrix'R包“Matrix”。
我需要特征值的和,所以我需要计算特征值或这个矩阵的轨迹。
我试图将矩阵转换为'正常'矩阵格式使用as.矩阵(),能够使用matrix. trace().这里我有内存问题,当试图转换文件我得到错误消息:Cholmod error'内存溢出'at file… /Core/cholmod_memory.c,
下一步,我寻找直接获取dgcMatrix对角线值(trace)的方法,现在我发现我可以使用
Diag签名(x="dgCMatrix")在Matrix包中,以及setMethod,但我还没有找到如何使用它的示例。
这里是否有示例代码显示此工作原理或任何其他解决方案?
试试这个:
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