【问题标题】:extract sparse rows from sparse matrix in r从r中的稀疏矩阵中提取稀疏行
【发布时间】:2014-06-06 11:20:46
【问题描述】:

我有一个大的稀疏矩阵要在 R 中分析。例如:

i <- c(1,3:8); j <- c(2,9,6:10); x <- 7 * (1:7)
(A <- sparseMatrix(i, j, x = x))
[1,] . 7 . . .  .  .  .  .  .
[2,] . . . . .  .  .  .  .  .
[3,] . . . . .  .  .  . 14  .
[4,] . . . . . 21  .  .  .  .
[5,] . . . . .  . 28  .  .  .
[6,] . . . . .  .  . 35  .  .
[7,] . . . . .  .  .  . 42  .
[8,] . . . . .  .  .  .  . 49

我想从这个矩阵中提取第 i 行,作为稀疏向量。 如果我写

(x=A[1,])

我得到

 [1] 0 7 0 0 0 0 0 0 0 0

但我想要的是

 [1] . 7 . . . . . . . .

我期望的是新向量不会实现零。我该怎么做?

谢谢

【问题讨论】:

    标签: r sparse-matrix sparse-array


    【解决方案1】:

    你可以使用drop = FALSE:

    A[1, , drop = FALSE]
    # 1 x 10 sparse Matrix of class "dgCMatrix"
    #                        
    # [1,] . 7 . . . . . . . .
    

    【讨论】:

    • 感谢您的建议。我可以再问你一个问题吗?当我得到行时,x = A[1, , drop = FALSE],我需要执行它的外积 p = x %o% x,但是 p 仍然是一个密集矩阵... 有什么命令可以设置R中的“稀疏环境”?
    • @user3714759 你可以试试library(Matrix); Matrix(x %o% x, sparse = TRUE)"%o%" 函数返回一个“正常”矩阵。
    猜你喜欢
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 2018-01-19
    • 2011-06-24
    • 1970-01-01
    • 2015-12-05
    • 1970-01-01
    相关资源
    最近更新 更多