r - 将 dgCMatrix 转换为逻辑矩阵

标签 r matrix sparse-matrix logical-operators coerce

考虑这个简单的稀疏矩阵

> (X <- sparseMatrix(c(1, 2, 1), c(1, 1, 2), x = 0:2))
2 x 2 sparse Matrix of class "dgCMatrix"

[1,] 0 2
[2,] 1 .

如何将其转换为指示对应元素是否为非空的矩阵?这是我现在正在做的,但是 0 不等于“空”,并且这种方法不区分它们。

> (Y <- X != 0)
2 x 2 sparse Matrix of class "lgCMatrix"

[1,] : |
[2,] | .

为了澄清,所需的输出可能只包含 TRUEFALSE 而不是 NA。它可以是 matrixsparseMatrix。甚至更优选地,它可以是列表,在这种情况下每个槽对应于X的一列。例如,X 的答案应该是

     [,1]  [,2]
[1,] TRUE  TRUE
[2,] TRUE FALSE

$`1`
[1] TRUE TRUE

$`2`
[1]  TRUE FALSE

最佳答案

Y <- as(X, "lgCMatrix") #should be more efficient than X != 0
Y@x[] <- TRUE #set all values to TRUE
as.matrix(Y)
#     [,1]  [,2]
#[1,] TRUE  TRUE
#[2,] TRUE FALSE

关于r - 将 dgCMatrix 转换为逻辑矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57317895/

相关文章:

c - fwrite 在二进制文件中写入矩阵的错误赋值

matlab - 在 Julia 中将复杂向量转换为稀疏对角数组

pandas - 使用 svd 求解欠定 scipy.sparse 矩阵

r - 按特定时间切割 POSIXct 以获取日常方法

r - 如何在R包中找到所有功能?

r - 如何生成对称随机矩阵?

c++ - 迭代器运算符++重载C++

r - K-means:初始中心不明显

r - 更改小部件的样式

r - 52周x轴ggplot2起点