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


R lsparseMatrix-classes 稀疏逻辑矩阵


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

说明

lsparseMatrix 类是具有 TRUE /FALSENA 条目的稀疏矩阵的虚拟类。仅存储 TRUE 元素的位置。

这些可以以 “triplet” 形式(类 TsparseMatrix 、子类 lgTMatrixlsTMatrixltTMatrix )或压缩的 column-oriented 形式(类 CsparseMatrix 、子类 lgCMatrixlsCMatrixltCMatrix ) or-rarely-in 压缩的 row-oriented 形式(类 RsparseMatrix 、子类 lgRMatrixlsRMatrixltRMatrix )。这些非虚拟类名称中的第二个字母表示 g enral、s ymmetric 或 t riangular。

细节

请注意,三元组存储(TsparseMatrix)矩阵(例如lgTMatrix)可能包含重复的索引对 ,对于相应的数字类dgTMatrix,其中对于此类对,添加了相应的x槽条目。对于逻辑矩阵,如果加法被定义为逻辑 ,即“TRUE + TRUE |-> TRUE”和“TRUE + FALSE |-> TRUE”,则与重复索引对 对应的x条目也是“added”。请注意,使用 uniqTsparse() 来获取内部唯一的表示,而无需重复的 条目。

类中的对象

可以通过调用 new("lgCMatrix", ...) 等形式来创建对象。更常见的是,对象是通过将数字稀疏矩阵强制转换为逻辑形式来创建的,例如在表达式 x != 0 中。

逻辑形式还用于涉及稀疏矩阵的算法的符号分析阶段。此类算法通常涉及两个阶段:确定结果中非零位置的符号阶段和计算实际结果的数字阶段。在符号阶段,仅对任何操作数中非零元素的位置感兴趣,因此任何数值稀疏矩阵都可以被视为逻辑稀疏矩阵。

插槽

x

"logical" 的对象,即 TRUENAFALSE

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 = "lgCMatrix")

t

signature(x = "lgCMatrix") :返回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)))
(lm <- (m > 1)) # lgC
!lm     # no longer sparse
stopifnot(is(lm,"lsparseMatrix"),
          identical(!lm, m <= 1))

data(KNex, package = "Matrix")
str(mmG.1 <- (KNex $ mm) > 0.1)# "lgC..."
table(mmG.1@x)# however with many ``non-structural zeros''
## from logical to nz_pattern -- okay when there are no NA's :
nmG.1 <- as(mmG.1, "nMatrix") # <<< has "TRUE" also where mmG.1 had FALSE
## from logical to "double"
dmG.1 <- as(mmG.1, "dMatrix") # has '0' and back:
lmG.1 <- as(dmG.1, "lMatrix")
stopifnot(identical(nmG.1, as((KNex $ mm) != 0,"nMatrix")),
          validObject(lmG.1),
          identical(lmG.1, mmG.1))

class(xnx <- crossprod(nmG.1))# "nsC.."
class(xlx <- crossprod(mmG.1))# "dsC.." : numeric
is0 <- (xlx == 0)
mean(as.vector(is0))# 99.3% zeros: quite sparse, but
table(xlx@x == 0)# more than half of the entries are (non-structural!) 0
stopifnot(isSymmetric(xlx), isSymmetric(xnx),
          ## compare xnx and xlx : have the *same* non-structural 0s :
          sapply(slotNames(xnx),
                 function(n) identical(slot(xnx, n), slot(xlx, n))))

也可以看看

dgCMatrixdgTMatrix

相关用法


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