R 稀疏逻辑矩阵符号

4

在R中的稀疏逻辑矩阵中,:符号表示什么?

下面是一些示例:

> library(Matrix)
> m <- Matrix(c(0,0,2:0), 3,5)
> m
3 x 5 sparse Matrix of class "dgCMatrix"

[1,] . 1 . . 2
[2,] . . 2 . 1
[3,] 2 . 1 . .
> m > 1

3 x 5 sparse Matrix of class "lgCMatrix"

[1,] . : . . |
[2,] . . | . :
[3,] | . : . .
> m > 2
3 x 5 sparse Matrix of class "lgCMatrix"

[1,] . . . . .
[2,] . . . . .
[3,] . . . . .

一开始我认为在稀疏矩阵 m 中,: 符号表示非缺失的 False 值(用 | 表示 True),然而,通过观察 m > 2 的例子,发现并不是这样,因为所有的值都是缺失的。


我似乎也找不到任何关于这个的文档,但我的初步想法是,您在假设 | 为真、: 表示非缺失假值方面是正确的,而您在 m > 2 的例子中看不到它们的原因是因为没有符合标准的数据点,没有需要存储逻辑,因此 |: 符号不是必需的。希望对 Matrix 包更熟悉的人能提供更明确的解释。 - scribbles
@scribbles 我认为你是正确的: m <- Matrix(0, 3,5) m[3,4] <- 1 当查询 m > 1 时,它是空的(.) 但是添加 m[2,3] <- 2,你开始看到 |: - Megatron
如果您对此信息感到满意,我将把它切换为答案,否则我将保留我的评论。 - scribbles
我想先确认这个行为。打算从CRAN的Matrix源代码中仔细查找。 - Megatron
听起来不错!我目前也在做同样的事情。 - scribbles
1个回答

1

是的,:代表非缺失的FALSE值。可以进行更多的操作,特别是使用drop0方法,以查看是否如此。例如,

> m_gt1 <- m > 1
> m_gt1
3 x 5 sparse Matrix of class "lgCMatrix"

[1,] . : . . |
[2,] . . | . :
[3,] | . : . .
> m_gt1@x
[1]  TRUE FALSE  TRUE FALSE  TRUE FALSE
> m_gt1_clean <- drop0(m_gt1)
> m_gt1_clean
3 x 5 sparse Matrix of class "lgCMatrix"

[1,] . . . . |
[2,] . . | . .
[3,] | . . . .
> m_gt1_clean@x
[1] TRUE TRUE TRUE

也就是说,消除非缺失的FALSE值会消除显示中的:
至于m>2的行为:代码中有一个用于评估比较运算符的分支,它检查是否所有内容都是FALSE,如果是,则会删除值(矩阵上的@x)。因此,您会失去非缺失的评估并看到完全稀疏的版本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接