在slam包或Matrix包中是否存在将稀疏矩阵从简单的三元组形式(来自slam包)转换为dgTMatrix/dgCMatrix形式(来自Matrix包)的内置函数?
还有一种内置方式可以访问简单三元组矩阵中的非零条目吗?
我正在使用R进行工作。
在slam包或Matrix包中是否存在将稀疏矩阵从简单的三元组形式(来自slam包)转换为dgTMatrix/dgCMatrix形式(来自Matrix包)的内置函数?
还有一种内置方式可以访问简单三元组矩阵中的非零条目吗?
我正在使用R进行工作。
实际上,有一种内置的方法:
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包进行大规模文本挖掘时出现计算机崩溃的情况。这个问题不需要一个可重复的示例。无论三元组矩阵中包含什么数据,它都是一个简单的三元组矩阵。这个问题只是询问是否有内置函数可以支持两者之间的转换。
轻微修改。sparseMatrix采用整数作为输入,而slam采用i、j作为因子,v可以是任何值。
as.sparseMatrix <- function(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
),
dimnames = dimnames(simple_triplet_matrix_sparse)
)
}
slam::
包截至2020年不会将索引存储为因子,因此不需要调用 as.numeric()
。否则,这是一个很好的函数。 - Gabriel J. Odom