r - 初始稀疏矩阵不会将新的零值变成稀疏矩阵

标签 r matrix zero sparse-matrix

当我处理庞大的数据集时,我收到的数据已经很稀疏了。我以常规方式加载它,我的矩阵“smskin”属于此类:

    Formal class 'dsCMatrix' [package "Matrix"] with 7 slots
      ..@ i       : int [1:57263] 0 1 2 3 4 5 6 7 8 9 ...
      ..@ p       : int [1:26018] 0 1 2 3 4 5 6 7 8 9 ...
      ..@ Dim     : int [1:2] 26017 26017
      ..@ Dimnames:List of 2
      .. ..$ : NULL
      .. ..$ : NULL
      ..@ x       : num [1:57263] 0 0 0 0 0 0 0 0 0 0 ...
      ..@ uplo    : chr "U"
      ..@ factors : list()

我的矩阵是 26000x26000,所有对角线值都是 1,尽管我想去掉它们以节省一些额外空间。我这样做 诊断(smskin)= 0 现在,为了节省更多空间,我想将那些零值转换为 .位置稀疏。 所以我做 new.smskin = 矩阵(smskin,sparse=TRUE) 然而,当我查看对角线的输出时,结果是

    10 x 10 sparse Matrix of class "dgCMatrix"
        [1,] 0 . . . . . . . . .
        [2,] . 0 . . . . . . . .
        [3,] . . 0 . . . . . . .
        [4,] . . . 0 . . . . . .
        [5,] . . . . 0 . . . . .
        [6,] . . . . . 0 . . . .
        [7,] . . . . . . 0 . . .
        [8,] . . . . . . . 0 . .
        [9,] . . . . . . . . 0 .
        [10,] . . . . . . . . . 0

看来 0 值不被接受为稀疏值。 我不确定我需要做什么,但我真的需要这条对角线也是稀疏的。

最好的, Z

最佳答案

目前还不清楚为什么有时会发生这种情况。但是,Matrix 包中提供了一个函数来修复它:drop0

smskin<-drop0(smskin)

关于r - 初始稀疏矩阵不会将新的零值变成稀疏矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25040241/

相关文章:

r - 从 data.frame 中提取仅包含数值的行

r - ggplot2和R中的scale_x_date中断

matlab - 删除矩阵每列的最小值

detection - Harris & Stephens 角点检测算法 : determinant always 0 (zero)

vb.net - MDI 子项仅在 WindowState 最大化时可见

r - 如何在多面板中删除饼图中的间距并使用 r 在顶部只有一个图例

r - 在dplyr中,如何删除和重命名不存在的列,操作所有名称,并使用字符串命名新变量?

python - 如何将numpy数组转换为Matlab矩阵?

java - 求逆矩阵

jquery - Highcharts - 在具有对数 Y 轴的折线图系列中处理和显示零(或负)值的最佳方式