我有一个大矩阵(36169 * 36169),正式班级' dgCMatrix' R package" Matrix"。
我需要特征值的总和,所以我需要计算特征值或该矩阵的轨迹。
我试图将矩阵转换为' normal'矩阵格式使用as.matrix(),以便能够使用matrix.trace()。这里我有内存问题,在尝试转换文件时我收到错误消息:Cholmod错误'内存不足'在文件../ Core / cholmod_memory.c,
下一步我搜索直接为dgcMatrix获取对角线值(跟踪)的方法,现在我发现我可以使用
Matrix包中的Diag签名(x =" dgCMatrix")以及setMethod,但我还没有找到如何使用它的示例。
这里有没有一个示例代码显示这项工作或任何其他解决方案?
答案 0 :(得分:0)
试试这个:
library(Matrix)
set.seed(123)
M <- as(matrix(rnorm(4), 2), "dgCMatrix") # test data
sum(diag(M))
[1] -0.4899673
答案 1 :(得分:0)
我认为你所需要的只是sum(diag(M))
:
set.seed(1)
M <- matrix(rnorm(10000), 100, 100)
E <- eigen(M)
sum(Re(E$values)); sum(diag(M)) # equal