【问题标题】:Fill sparse matrix with sapply in R在 R 中用 sapply 填充稀疏矩阵
【发布时间】:2016-04-01 00:40:38
【问题描述】:

假设X 是一个大型稀疏矩阵,其中每一行只有一个不同于零的条目。我有一个向量pos,其中包含该非零元素所在列的位置。为了填充矩阵,以下循环起作用:

for (row in 1:nrow(X)) {
    X[row, pos[row]] <- 1
}

有没有办法在没有循环的情况下做到这一点,也许使用sapply

【问题讨论】:

    标签: r matrix sapply


    【解决方案1】:

    你可以看看 Matrix 中的sparseMatrix 函数:

    > library(Matrix)
    > (pos = sample(1:7))
    [1] 5 1 6 4 7 2 3
    > sparseMatrix(1:7, pos)
    7 x 7 sparse Matrix of class "ngCMatrix"
    
    [1,] . . . . | . .
    [2,] | . . . . . .
    [3,] . . . . . | .
    [4,] . . . | . . .
    [5,] . . . . . . |
    [6,] . | . . . . .
    [7,] . . | . . . .
    

    Matrix 包中的函数需要一些使用,但在处理稀疏矩阵时它们提供了很多好处。

    【讨论】:

    • 谢谢,它有效。由于X不一定是方阵,所以我用X &lt;- sparseMatrix(i = 1:n, j = pos, x = 1),其中n是行数。
    猜你喜欢
    • 1970-01-01
    • 2018-05-06
    • 2012-07-28
    • 2023-04-05
    • 1970-01-01
    • 2023-04-06
    • 2013-07-23
    • 1970-01-01
    • 2016-03-14
    相关资源
    最近更新 更多