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 |
稠密对称或稠密三角矩阵。
|
symmetric |
逻辑(包括 |
upperTri |
(仅适用于三角形 |
... |
传入或传出其他方法的进一步参数。 |
细节
pack(x) 检查矩阵 x 不是从虚拟类之一继承 "symmetricMatrix" "triangularMatrix" 的对称性(通过 isSymmetric() )。然后进行上三角和下三角(通过 isTriangular() )以确定合适的强制。将 symmetric 和 upperTri 之一或两者设置为 TRUE 或 FALSE 而不是 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 packedMatrix-class 压缩密集矩阵的虚拟类“packedMatrix”
- R printSpMatrix 灵活格式化和打印稀疏矩阵
- R pMatrix-class 排列矩阵
- R dtrMatrix-class 三角形稠密数值矩阵
- R facmul-methods 乘以矩阵因式分解的因数
- R solve-methods 函数求解矩阵包中的方法
- R updown-methods 更新和降级稀疏 Cholesky 分解
- R bdiag 构建分块对角矩阵
- R symmetricMatrix-class 包矩阵中对称矩阵的虚拟类
- R all.equal-methods 函数 all.equal() 的矩阵封装方法
- R boolmatmult-methods 布尔算术矩阵乘积:%&% 和方法
- R ltrMatrix-class 三角密集逻辑矩阵
- R Hilbert 生成希尔伯特矩阵
- R nearPD 最近正定矩阵
- R lsyMatrix-class 对称密集逻辑矩阵
- R CHMfactor-class 稀疏 Cholesky 分解
- R symmpart-methods 矩阵的对称部分和偏斜(对称)部分
- R sparseMatrix 从非零项构建一般稀疏矩阵
- R dgCMatrix-class 压缩、稀疏、面向列的数值矩阵
- R Cholesky-methods Cholesky 分解方法
- R Subassign-methods “[<-”的方法 - 分配给“矩阵”的子集
- R ldenseMatrix-class 密集逻辑矩阵的虚拟类“ldenseMatrix”
- R norm-methods 矩阵范数
- R ngeMatrix-class 一般密集非零模式矩阵的“ngeMatrix”类
- R CAex 阿尔伯斯的示例矩阵与“困难”特征分解
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Representation of Packed and Unpacked Dense Matrices。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
