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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。