首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有效地将稀疏矩阵的元素设置为0

有效地将稀疏矩阵的元素设置为0
EN

Stack Overflow用户
提问于 2018-04-04 13:14:23
回答 1查看 63关注 0票数 1

假设我有一个稀疏矩阵:

代码语言:javascript
复制
library(Matrix)
m <- Matrix(rpois(100, 1), 10, 10, sparse=TRUE)
m
#10 x 10 sparse Matrix of class "dgCMatrix"

# [1,] . . 2 3 1 1 1 . 3 1
# [2,] 1 . 1 . 1 . 2 . . .
# [3,] 1 4 1 . . . . 5 1 1
# [4,] . 1 1 . . . 4 1 1 1
# [5,] 1 . 4 . 1 . . 1 . 2
# [6,] 1 1 2 1 . 1 . 1 2 1
# [7,] 4 2 1 1 . . . 1 1 3
# [8,] 2 2 1 1 1 1 . 1 1 2
# [9,] 2 1 1 . 3 . 2 . . 1
#[10,] . 2 1 1 . . . 1 3 3

我想把所有元素设置为零,小于或等于1。这是一种安全的方法吗?注意,从技术上讲,m2不再是一个压缩的稀疏矩阵,因为一些“非零”元素现在实际上是零。

代码语言:javascript
复制
m2@x[m2@x < 2] <- 0
m2
#10 x 10 sparse Matrix of class "dgCMatrix"

# [1,] . . 2 3 0 0 0 . 3 0
# [2,] 0 . 0 . 0 . 2 . . .
# [3,] 0 4 0 . . . . 5 0 0
# [4,] . 0 0 . . . 4 0 0 0
# [5,] 0 . 4 . 0 . . 0 . 2
# [6,] 0 0 2 0 . 0 . 0 2 0
# [7,] 4 2 0 0 . . . 0 0 3
# [8,] 2 2 0 0 0 0 . 0 0 2
# [9,] 2 0 0 . 3 . 2 . . 0
#[10,] . 2 0 0 . . . 0 3 3

特别是,我不想创建一个巨大的指示矩阵,它给出元素的位置要更改(如在m[m < 2] <- 0中),或者手动遍历元素。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-04 13:38:50

我认为你的方法没有任何不安全的地方,甚至可能会被推荐。如果您希望有一个完全稀疏的矩阵,那么可以这样做:

代码语言:javascript
复制
drop0(m2)
#10 x 10 sparse Matrix of class "dgCMatrix"
#                         
# [1,] 2 . . . . . . . . .
# [2,] . . . 2 . . . . . .
# [3,] . . 2 . . . . . 2 .
# [4,] 2 2 . . 4 . . 2 2 3
# [5,] . 4 . 3 . 3 . . . .
# [6,] 2 . . . . 3 2 . . .
# [7,] . . . . . . 2 . . 2
# [8,] . . . . . . 2 . . 4
# [9,] 2 . . 2 . . . . . 2
#[10,] . . . . . . 2 . . .
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49652010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档