当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R nsparseMatrix-classes 稀疏“模式”矩阵


R语言 nsparseMatrix-classes 位于 Matrix 包(package)。

说明

nsparseMatrix 类是稀疏 “pattern” 矩阵的虚拟类,即概念上具有 TRUE /FALSE 条目的二元矩阵。仅存储 TRUE 元素的位置。

这些可以以 “triplet” 形式存储( TsparseMatrix ,子类 ngTMatrixnsTMatrixntTMatrix ,它们实际上包含对,而不是三元组)或压缩的 column-oriented 形式(类 CsparseMatrix ,子类) ngCMatrixnsCMatrixntCMatrix ) or-rarely-in 压缩 row-oriented 形式(类 RsparseMatrix 、子类 ngRMatrixnsRMatrixntRMatrix ) 。这些非虚拟类名称中的第二个字母表示 g enral、s ymmetric 或 t riangular。

类中的对象

可以通过调用 new("ngCMatrix", ...) 等形式来创建对象。更常见的是,通过将数字稀疏矩阵强制转换为模式形式来创建对象,以用于涉及稀疏矩阵的算法的符号分析阶段。此类算法通常涉及两个阶段:确定结果中非零位置的符号阶段和计算实际结果的数字阶段。在符号阶段,仅对任何操作数中非零元素的位置感兴趣,因此数值稀疏矩阵可以被视为稀疏模式矩阵。

插槽

uplo

"character" 的对象。对于上三角,必须是"U",对于下三角,必须是"L"。存在于三角形和对称类中,但不存在于普通类中。

diag

"character" 的对象。对于单位三角形(对角线全为 1),必须是 "U" ,对于非单位必须是 "N" 。当 diag"U" 时,不会显式存储隐式对角线元素。仅出现在三角班中。

p

"integer" 类指针对象,每列(行)一个,指向列中元素的初始(从零开始)索引。仅以压缩column-oriented 和压缩row-oriented 形式存在。

i

"integer" 的对象,长度为 nnzero(非零元素的数量)。这些是矩阵中每个 TRUE 元素的行号。所有其他元素均为 FALSE。仅以三元组和压缩column-oriented 形式存在。

j

"integer" 的对象,长度为 nnzero(非零元素的数量)。这些是矩阵中每个 TRUE 元素的列号。所有其他元素均为 FALSE。仅以三元组和压缩row-oriented 形式存在。

Dim

"integer" 类的对象 - 矩阵的维度。

方法

强制

signature(from = "dgCMatrix", to = "ngCMatrix") 以及许多类似的;通常你应该强制 "nsparseMatrix" (或 "nMatrix" )。请注意,对稀疏模式矩阵的强制会记录所有潜在的非零条目,即显式 (“non-structural”) 零被强制为 TRUE ,而不是 FALSE ,请参见示例。

t

signature(x = "ngCMatrix") :返回x 的转置

哪一个

signature(x = "lsparseMatrix") ,语义上等同于 base 函数 which(x, arr.ind) ;有关详细信息,请参阅lMatrix 类文档。

例子


(m <- Matrix(c(0,0,2:0), 3,5, dimnames=list(LETTERS[1:3],NULL)))
## ``extract the nonzero-pattern of (m) into an nMatrix'':
nm <- as(m, "nsparseMatrix") ## -> will be a "ngCMatrix"
str(nm) # no 'x' slot
nnm <- !nm # no longer sparse
## consistency check:
stopifnot(xor(as( nm, "matrix"),
              as(nnm, "matrix")))

## low-level way of adding "non-structural zeros" :
nnm <- as(nnm, "lsparseMatrix") # "lgCMatrix"
nnm@x[2:4] <- c(FALSE, NA, NA)
nnm
as(nnm, "nMatrix") # NAs *and* non-structural 0  |--->  'TRUE'

data(KNex, package = "Matrix")
nmm <- as(KNex $ mm, "nMatrix")
str(xlx <- crossprod(nmm))# "nsCMatrix"
stopifnot(isSymmetric(xlx))
image(xlx, main=paste("crossprod(nmm) : Sparse", class(xlx)))

也可以看看

dgCMatrix

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Sparse "pattern" Matrices。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。