按稀疏矩阵的行查找非零条目,并在R中创建新矩阵

时间:2014-08-07 18:10:30

标签: r matrix

我有一个大小为300000乘5000的大型稀疏矩阵A.它使用R中的Matrix包存储为稀疏矩阵。我希望每行找到A的非零条目,并使用它们构建另一行矩阵称为A_clique。我写了下面的代码,但它太慢了。以下是可重现的代码。

i <- c(1,3:8, 1000, 300000)
j <- c(2,9,6:10, 4999, 5000)
x <- 1
A <- sparseMatrix(i, j, x = x)
A_clique = matrix(0, nrow = ncol(A), ncol = ncol(A))
for (i in 1:nrow(A)) {
    non_zero_ind_by_row = which(A[i,] != 0 )
    A_clique[non_zero_ind_by_row, non_zero_ind_by_row] = 1
} 

对于小尺寸A,上述代码是合理的。然而,对于我所拥有的矩阵尺寸来说,这需要太长时间。我注意到我没有使用稀疏矩阵的结构,它给出了A中非零项的条目(row,col)。但我不知道如何使用该信息来使我的代码更快。感谢您的帮助!

0 个答案:

没有答案