用R中的sapply填充稀疏矩阵

时间:2016-04-01 00:40:39

标签: r matrix sapply

Say X是一个大的稀疏矩阵,其中每一行只有一个不同于零的条目。我有一个向量pos,其中包含此非零元素所在列的位置。要填充矩阵,以下循环有效:

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

有没有办法在没有循环的情况下执行此操作,可能使用sapply

1 个答案:

答案 0 :(得分:3)

您可以查看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包中的功能需要使用,但在处理稀疏矩阵时它们提供了大量的好处。