當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R pack 壓縮和非壓縮密集矩陣的表示


R語言 pack 位於 Matrix 包(package)。

說明

pack() 將密集對稱矩陣和密集三角矩陣從未壓縮格式(存儲完整矩陣)強製轉換為壓縮格式(僅存儲上下三角形之一)。 unpack() 執行反向強製轉換。這兩種格式由虛擬類 "packedMatrix""unpackedMatrix" 形式化。

用法

pack(x, ...)
## S4 method for signature 'dgeMatrix'
pack(x, symmetric = NA, upperTri = NA, ...)
## S4 method for signature 'lgeMatrix'
pack(x, symmetric = NA, upperTri = NA, ...)
## S4 method for signature 'ngeMatrix'
pack(x, symmetric = NA, upperTri = NA, ...)
## S4 method for signature 'matrix'
pack(x, symmetric = NA, upperTri = NA, ...)

unpack(x, ...)

參數

x

稠密對稱或稠密三角矩陣。

對於pack()

通常是 "unpackedMatrix" 或標準 "matrix" ,但允許使用 "packedMatrix" 並原樣返回。

對於unpack()

通常是 "packedMatrix" ,盡管 "unpackedMatrix" 是允許的並且返回不變。

symmetric

邏輯(包括 NA )可選地指示 x 是否對稱(或三角形)。

upperTri

(僅適用於三角形x)邏輯(包括NA)指示x是否是上(或下)三角形。

...

傳入或傳出其他方法的進一步參數。

細節

pack(x) 檢查矩陣 x 不是從虛擬類之一繼承 "symmetricMatrix" "triangularMatrix" 的對稱性(通過 isSymmetric() )。然後進行上三角和下三角(通過 isTriangular() )以確定合適的強製。將 symmetricupperTri 之一或兩者設置為 TRUEFALSE 而不是 NA 允許跳過已知對稱或(上或下)三角形的大型矩陣的不相關測試。

用戶不應假設pack()unpack() 是逆運算。具體地,y <- unpack(pack(x))可能無法再現identical()意義上的"unpackedMatrix" x。請參閱示例。

對於pack()

"packedMatrix" 給出 x 的壓縮表示。

對於unpack()

"unpackedMatrix" 給出 x 的完整存儲表示。

例子


showMethods("pack")
(s <- crossprod(matrix(sample(15), 5,3))) # traditional symmetric matrix
(sp <- pack(s))
mt <- as.matrix(tt <- tril(s))
(pt <- pack(mt))
stopifnot(identical(pt, pack(tt)),
	  dim(s ) == dim(sp), all(s  == sp),
	  dim(mt) == dim(pt), all(mt == pt), all(mt == tt))

showMethods("unpack")
(cp4 <- chol(Hilbert(4))) # is triangular
tp4 <- pack(cp4) # [t]riangular [p]acked
str(tp4)
(unpack(tp4))
stopifnot(identical(tp4, pack(unpack(tp4))))

z1 <- new("dsyMatrix", Dim = c(2L, 2L), x = as.double(1:4), uplo = "U")
z2 <- unpack(pack(z1))
stopifnot(!identical(z1, z2), # _not_ identical
          all(z1 == z2)) # but mathematically equal
cbind(z1@x, z2@x) # (unused!) lower triangle is "lost" in translation

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Representation of Packed and Unpacked Dense Matrices。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。