Сумма строки для крупноформатной матрицы /simple _triplet_matrix?? {tm package}

Итак, у меня очень большая матрица терминов:

> class(ph.DTM)
[1] "TermDocumentMatrix"    "simple_triplet_matrix"

> ph.DTM
A term-document matrix (109996 terms, 262811 documents)

Non-/sparse entries: 3705693/28904453063
Sparsity           : 100%
Maximal term length: 191 
Weighting          : term frequency (tf)

Как мне получить rowSum (частоту) каждого термина? Я пробовал:

> apply(ph.DTM, 1, sum)
Error in vector(typeof(x$v), nr * nc) : vector size cannot be NA
In addition: Warning message:
In nr * nc : NAs produced by integer overflow

Очевидно, я знаю о removeSparseTerms:

ph.DTM2 <- removeSparseTerms(ph.DTM, 0.99999)

Что немного сокращает размер:

> ph.DTM2
A term-document matrix (28842 terms, 262811 documents)

Non-/sparse entries: 3612620/7576382242
Sparsity           : 100%
Maximal term length: 24 
Weighting          : term frequency (tf)

Но я до сих пор не могу применить к нему какие-либо связанные с матрицей функции:

> as.matrix(ph.DTM2)
Error in vector(typeof(x$v), nr * nc) : vector size cannot be NA
In addition: Warning message:
In nr * nc : NAs produced by integer overflow

Как я могу просто получить простую сумму строки на этом объекте? Спасибо!!

Ответы

Ответ 1

ОК, после еще нескольких Google'ов я наткнулся на пакет slam, который позволяет:

ph.DTM3 <- rollup(ph.DTM, 2, na.rm=TRUE, FUN = sum)

Что работает.

Ответ 2

Как упоминалось в одном из комментариев @badpanda, slam теперь имеет функции row_sums и col_sums для разреженных массивов:

slam::row_sums(dtm, na.rm = T)
slam::col_sums(tdm, na.rm = T)

Ответ 3

Я думаю:

 rowSums(as.matrix(ph.DTM))

Будет работать также.