将简单三元组矩阵(slam)转换为R中的稀疏矩阵(矩阵)

时间:2013-11-15 15:26:22

标签: r matrix sparse-matrix

在slam包或Matrix包中是否有内置函数将简单三元组矩阵形式的稀疏矩阵(从slam包)转换为dgTMatrix / dgCMatrix形式的稀疏矩阵(来自Matrix包)?

是否存在从简单三元组矩阵访问非零条目的内置方法?

我在R

工作

2 个答案:

答案 0 :(得分:18)

实际上,有一种内置方式:

simple_triplet_matrix_sparse <-  sparseMatrix(i=simple_triplet_matrix_sparse$i, j=simple_triplet_matrix_sparse$j, x=simple_triplet_matrix_sparse$v,
           dims=c(simple_triplet_matrix_sparse$nrow, simple_triplet_matrix_sparse$ncol))

根据我自己的经验,这个技巧为我节省了大量的时间和痛苦,以及使用tm软件包进行大规模文本挖掘的计算机崩溃。这个问题并不需要一个可重复的例子。简单的三元组矩阵是一个简单的三元组矩阵,无论它包含什么数据。这个问题只是询问是否在两个包中都有内置函数来支持两者之间的转换。

答案 1 :(得分:3)

稍微修改一下。 sparseMatrix将整数作为输入,而slam将i,j作为因子,v可以是任何东西

as.sparseMatrix <- function(simple_triplet_matrix_sparse) {
  retval <-  sparseMatrix(i=as.numeric(simple_triplet_matrix_sparse$i),
                          j=as.numeric(simple_triplet_matrix_sparse$j),
                          x=as.numeric(as.character(simple_triplet_matrix_sparse$v)),
                          dims=c(simple_triplet_matrix_sparse$nrow, 
                                 simple_triplet_matrix_sparse$ncol),
                          dimnames = dimnames(simple_triplet_matrix_sparse),
                          giveCsparse = TRUE)
}