1

4 行 4 列の行列などのスパース行列 (つまり、多数のゼロ エントリ) を表示する R パッケージはありますか。

Q <- matrix(c(1,-1,0,0, -1,2,-1,0,  0,-1,2,-1, 0,0,-1,1), nrow=4); print(Q)

それを 4 行 2 列の行列として保存 (および操作) します。

Q.band <- matrix(c(1,2,2,1, -1,-1,-1,0), nrow=4); print(Q.band)

ゼロ エントリは必要ないため、対称性により、ゼロ以外の非対角エントリを 2 回保存する必要はありません。

R パッケージの Matrix と spam を調査しました。それらは役に立ちましたが、上記とまったく同じようには機能しませんでした。

4

1 に答える 1

1

パッケージdsCMatrixから使用できます:Matrix

dsCMatrix クラスは、圧縮された列指向形式の対称疎数値行列のクラスです。

だからあなたの場合:

library(Matrix)
as(Q, "dsCMatrix")

これは7つの要素のみを保存します

 length(as(Q, "dsCMatrix")@x)
 [1] 7

マトリックスを取得するにQ.bandは、たとえば次のようにします。

matrix(c(as(Q, "dsCMatrix")@x,0),ncol=2,byrow=TRUE)
    [,1] [,2]
[1,]    1   -1
[2,]    2   -1
[3,]    2   -1
[4,]    1    0
于 2013-07-17T13:34:58.387 に答える