преобразовать простую матрицу триплетов (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)
}