首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >大型术语的行和-文档矩阵/ simple_triplet_matrix ??{tm package}

大型术语的行和-文档矩阵/ simple_triplet_matrix ??{tm package}
EN

Stack Overflow用户
提问于 2014-02-21 06:50:44
回答 3查看 12.5K关注 0票数 17

所以我有一个非常大的术语文档矩阵:

代码语言:javascript
运行
复制
> 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 (频率)?我试过了:

代码语言:javascript
运行
复制
> 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

代码语言:javascript
运行
复制
ph.DTM2 <- removeSparseTerms(ph.DTM, 0.99999)

这会将尺寸缩小一点:

代码语言:javascript
运行
复制
> 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)

但是我仍然不能对它应用任何与矩阵相关的函数:

代码语言:javascript
运行
复制
> 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

如何才能在此对象上获得简单的行求和??谢谢!!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-21 07:01:42

好的,经过更多的谷歌搜索,我发现了slam包,它支持:

代码语言:javascript
运行
复制
ph.DTM3 <- rollup(ph.DTM, 2, na.rm=TRUE, FUN = sum)

这是可行的。

票数 22
EN

Stack Overflow用户

发布于 2015-06-16 18:14:53

正如@badpanda在其中一条评论中提到的那样,slam现在具有用于稀疏数组的row_sumscol_sums函数:

代码语言:javascript
运行
复制
slam::row_sums(dtm, na.rm = T)
slam::col_sums(tdm, na.rm = T)
票数 11
EN

Stack Overflow用户

发布于 2014-02-21 07:41:25

我认为:

代码语言:javascript
运行
复制
 rowSums(as.matrix(ph.DTM))

也行得通。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21921422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档