在R中对经过滤的TDM矩阵进行排序

时间:2015-06-09 21:30:52

标签: r matrix

我遇到了TDM矩阵的问题 - 我能够相应地对它进行排序,一切都很顺利,但是没有我想过滤它(或者反过来,我听说,它更有效地过滤掉了矩阵)。无论哪种方式,我想要做的就是过滤TDM,就像这个问题:subset vector by first letter in R 现在TDM看起来像这样:

> inspect(tdm[1:5,1:10])
<<TermDocumentMatrix (terms: 5, documents: 10)>>
Non-/sparse entries: 3/47
Sparsity           : 94%
Maximal term length: 10
Weighting          : term frequency (tf)

            Docs
Terms        1 2 3 4 5 6 7 8 9 10
  ability    0 0 0 0 0 0 1 0 0  0
  about      0 0 0 1 0 0 3 0 0  0
  acceptance 0 0 0 0 0 0 0 0 0  0
  accepted   0 0 0 0 0 0 0 0 0  0
  access     0 0 0 0 0 0 0 0 0  0

但我想用ac过滤条款,只留下:

            Docs
Terms        1 2 3 4 5 6 7 8 9 10
  ability    0 0 0 0 0 0 1 0 0  0
  about      0 0 0 1 0 0 3 0 0  0

我尝试使用grep或子集,但无法实现,但我得到的错误是没有这种情况(名为numeric(0))。我对R很新,所以请 - 如果我在错误的方向搜索,请指出,我真的很感激。非常感谢提前。

代码很简单:

library("tm")
data(acq)
    corpus<-Corpus(VectorSource(acq))
    tdm<-TermDocumentMatrix(corpus)
    final<-as.matrix(tdm)
    final[grep("^[aA].*", final)]

1 个答案:

答案 0 :(得分:0)

获取以&#34; a&#34;开头的所有条款使用

$args = array( 'posts_per_page' => 20, 'offset'=> 20, 'category' => 1 );

$myposts = get_posts( $args );

它是包含术语的非矩阵值本身,它是具有您想要映射的值的矩阵的行名称。然后,由于您按行对矩阵进行子集化,因此应使用两个值final[ grep("^[aA].*", rownames(final)) , ] 子集化语法。