我正在使用%^%
包中的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
对象不兼容还是我做错了?
答案 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