来自expm包的%^%运算符无法识别稀疏矩阵

时间:2018-04-14 13:32:59

标签: r sparse-matrix exponential

我正在使用%^%包中的expm运算符来计算稀疏矩阵的功效,如下所示:

# Convert to sparse
Qm <- Matrix(Qm, sparse = TRUE)
# Calculate the power
Qmp <- expm::`%^%`( Qm, as.numeric(L)-1 )

class(Qm)返回Matrix,但我收到以下错误:

  

expm ::`%^%`中的错误(Qm,as.numeric(L) - 1):不是矩阵

这是由于%^%运算符与Matrix对象不兼容还是我做错了?

1 个答案:

答案 0 :(得分:1)

文档明确指出只接受类matrix作为输入。您有两种选择:

Qm <- matrix(c(0,1,1,1), 2) 

library(Matrix)
Qm <- Matrix(Qm, sparse = TRUE)

library(expm)
Qm %^% 3
#Error in Qm %^% 3 : not a matrix

#coerce to dense matrix
as.matrix(Qm) %^% 3
#     [,1] [,2]
#[1,]    1    2
#[2,]    2    3

#or use loop
Res <- Qm
for (i in seq_len(3-1)) Res <- Res %*% Qm
#2 x 2 sparse Matrix of class "dgCMatrix"
#
#[1,] 1 2
#[2,] 2 3