2015-06-09 30 views
0

我遇到了TDM矩陣的問題 - 我能夠相應地對它進行排序,在那裏一切都很順利,但是我不想過濾它(或者相反,它更有效地過濾未排序的矩陣)。無論哪種方式,我想要做的事情是過濾TDM,因爲在這樣一個問題:subset vector by first letter in R 現在TDM看起來是這樣的:在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或子集,但不可能設法做到這一點,但我得到的是有沒有這樣的情況下,錯誤(命名爲數字(0))。我對R很新,所以請 - 如果我在錯誤的方向尋找,指出,我會很感激。非常感謝提前。

的代碼非常簡單明瞭:

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

請提供[可重現的示例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。最好在問題本身中包含最少的樣本輸入數據。清楚所需的輸出是什麼。 – MrFlick

+0

感謝您的建議,我已根據指南編輯了該問題。我希望現在可以。 – megakot

回答

0

要獲得所有以「A」使用

final[ grep("^[aA].*", rownames(final)) , ] 

這是不是矩陣值本身持有的條款啓動的條件,這是該行矩陣的名稱,它們具有您想要反對的值。然後,由於您按行對子集進行子集化,因此應使用子集化語法的兩個值[row,col]

+0

這很好,謝謝! – megakot