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


R drop0 从稀疏矩阵中删除非结构零


R语言 drop0 位于 Matrix 包(package)。

说明

从稀疏矩阵中删除 “non-structural” 零(即显式存储在内存中的零)并返回结果。

用法

drop0(x, tol = 0, is.Csparse = NA, give.Csparse = TRUE)

参数

x

Matrix ,通常继承自虚拟类 sparseMatrixdenseMatrix 和传统向量和矩阵被强制为 CsparseMatrix ,并自动删除零,因此传递此类 x 的用户应考虑使用 as(x, "CsparseMatrix") 代替,特别是在 tol = 0 情况下。

tol

非负数。如果x 为数字,则删除绝对值小于或等于tol 的条目。

is.Csparse

仅当 give.CsparseTRUE 时才使用的逻辑,指示 x 是否已从虚拟类 CsparseMatrix 继承,在这种情况下,不会尝试强制转换,从而允许一些(通常较小的)加速。

give.Csparse

指示结果是否必须从虚拟类 CsparseMatrix 继承的逻辑。如果 FALSEx 继承自 RsparseMatrixTsparseMatrixindMatrix ,则结果保留 x 的类。默认值为TRUE,仅用于向后兼容。

sparseMatrix ,从 x 中删除非结构零的结果,可能是在强制转换之后。

注意

drop0 有时与 zapsmall 一起调用,例如,在处理稀疏矩阵乘积时;请参阅示例。

例子

(m <- sparseMatrix(i = 1:8, j = 2:9, x = c(0:2, 3:-1),
                   dims = c(10L, 20L)))
drop0(m)

## A larger example:
t5 <- new("dtCMatrix", Dim = c(5L, 5L), uplo = "L",
          x = c(10, 1, 3, 10, 1, 10, 1, 10, 10),
          i = c(0L,2L,4L, 1L, 3L,2L,4L, 3L, 4L),
          p = c(0L, 3L, 5L, 7:9))
TT <- kronecker(t5, kronecker(kronecker(t5, t5), t5))
IT <- solve(TT)
I. <- TT %*% IT ;  nnzero(I.) # 697 ( == 625 + 72 )
I.0 <- drop0(zapsmall(I.))
## which actually can be more efficiently achieved by
I.. <- drop0(I., tol = 1e-15)
stopifnot(all(I.0 == Diagonal(625)), nnzero(I..) == 625)

也可以看看

函数 sparseMatrix ,用于构造继承自虚拟类 sparseMatrix 的对象; nnzero

相关用法


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