2012-06-21 59 views
2

我正在使用RTextTools構建帶有矩陣和模型的訓練集,我將稍後將其應用於不同的文檔以對它們進行分類。如何從文檔術語矩陣中刪除NaN值

編輯:矩陣是一個文檔詞矩陣

我遇到的問題是,有時某些文檔時,我創建了new_matrix與以下行

new_matrix <- create_matrix(data$document,language="english", removeNumbers=FALSE, removePunctuation=TRUE, removeStopwords=TRUE, toLower=TRUE, stemWords=TRUE, minDocFreq=1,weighting=weightTfIdf,originalMatrix=matrix) 

我得到一些NaN值使我的語料庫失敗

corpus <- create_corpus(new_matrix,data$value, testSize=1:100,virgin=FALSE) 

With the錯誤

Error in .csr.coo(x) : NA/NaN/Inf in foreign function call (arg 4) 

我不知道爲什麼有一些NaN值。我的猜測是它與new_matrix中存在的某些單詞有關,而不是原始矩陣。

如何在結果矩陣中更改NaN值0?

這樣做是否會改變分類結果?

任何幫助,非常感謝!謝謝!

+0

相關:[R用矩陣替換NAs](http://stackoverflow.com/q/11140650/271616)。 –

+0

謝謝約書亞,這適用於矩陣,但不適用於文檔術語矩陣 – JordanBelf

+2

A [reproducible example](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example ) 有助於。 如果沒有,你可以看看矩陣('str(new_matrix)')的內容, 注意它只是一個位置和值的列表, 並刪除了違規的列表 ('m < - new_matrix; i < - is.finite(m $ v); m $ i < - m $ i [i]; m $ j < - m $ j [i]; m $ v < - m $ v [i]')。 –

回答

3

簡單的方式通過使用is.na()來查找NaN值:

data<-c(1,2,NaN,4,2) 
data[is.na(data)]<-0 
data 

[1] 1 2 0 4 2

+0

謝謝,我試過了,但它不適用於我的矩陣,運行後的輸出是相同的。這裏是我的代碼[new_matrix [is.na(new_matrix)] < - 0.它似乎適用於矢量。 – JordanBelf

+0

更正,它似乎與矩陣但與文檔術語矩陣 – JordanBelf

0

我RTextTools的主要開發人員,並且會很感激如果你可以給我一個這個錯誤的例子。原始的矩陣參數是在過去兩個月內引入的,並且可能存在一些正在處理的問題。你可以在我的網站上給我發一封電子郵件(http://www.timjurka.com/)

+0

工作謝謝,我會盡快與我的代碼聯繫! – JordanBelf