преобразовать простую матрицу триплетов (slam) в разреженную матрицу (Matrix) в R

есть ли встроенная функция в пакете slam или пакете Matrix для преобразования разреженной матрицы в простой форме матрицы триплета (из пакета slam) в разреженную матрицу в форме dgTMatrix/dgCMatrix (из пакета Matrix) ?

и есть ли встроенный способ доступа к ненулевым записям из простой триплетной матрицы ?

Я работаю в R

2 ответов


на самом деле, есть встроенный способ:

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) {
  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)
}