2014-12-07 77 views
2

我正在嘗試處理文本文件。總的來說,我有一個我想分析的語料庫。爲了使用tm包(R中的文本挖掘包)創建一個語料庫對象,我需要將此段變爲一個巨大的向量以便正確讀取。如何讀取R中的文本文件作爲一行

我有一段

  Commercial exploitation over the past two hundred years drove     
      the great Mysticete whales to near extinction. Variation in     
      the sizes of populations prior to exploitation, minimal       
      population size during exploitation and current population      
      sizes permit analyses of the effects of differing levels of      
      exploitation on species with different biogeographical       
      distributions and life-history characteristics. 

我用兩個掃描和readline方法和它處理這樣的文字:

[28]「在過去200年商業開發開車「
[29]」的大mysticete鯨瀕臨滅絕變化「
[30]」種羣的開發最小前的尺寸「

有沒有辦法擺脫換行符?或者閱讀文本文件作爲一個巨大的矢量?

發佈的所有解決方案迄今爲止都非常棒,非常感謝。

+0

沒有多少熟悉R,但你無法遍歷行,並將其追加到一個字符串數據類型。 – krammer 2014-12-07 11:18:04

+0

我是R的初學者。我知道很多人使用apply函數來做循環。我可以嘗試你的建議。謝謝你的好主意。 – 2014-12-07 11:21:36

+0

@ krammer所以我做了一些更多的搜索檢查[鏈接](http://stackoverflow.com/questions/23001548/dealing-with-readlines-function-in-r)和[鏈接](http:// www .r-bloggers.com/paste-paste0-and-sprintf /) – 2014-12-07 12:01:10

回答

3

我前一陣子有同樣的問題,並找到了一個解決辦法:要讀單獨的線,然後將它們粘貼在一起,刪除「\ n」換行:

filename <- "tmp.txt" 
paste0(readLines(filename),collapse=" ") 

如果你需要換行,然後您可以讀取該文件作爲字符串

readChar(filename,1e5) 

指定一個足夠大的字符數(100000在這種情況下)。

3

如果對該文件執行的處理過多,則可能需要很長時間才能讀取。你可以考慮不加修改地閱讀它,然後進行修改。 stringi包具有此特定操作的功能。與作者編寫C所以它們的功能是很好,速度很快

因此,假如你讀過的文件,並把它命名爲txt

library(stringi) 
stri_flatten(txt) 
# [1] "   Commercial exploitation over the past two hundred years drove     \n   the great Mysticete whales to near extinction. Variation in     \n   the sizes of populations prior to exploitation, minimal      \n   population size during exploitation and current population      \n   sizes permit analyses of the effects of differing levels of     \n   exploitation on species with different biogeographical       \n   distributions and life-history characteristics." 

和字符串仍然是相同的格式,只夷爲平地。要檢查,我們可以看看cat

cat(stri_flatten(txt)) 
      Commercial exploitation over the past two hundred years drove     
      the great Mysticete whales to near extinction. Variation in     
      the sizes of populations prior to exploitation, minimal       
      population size during exploitation and current population      
      sizes permit analyses of the effects of differing levels of      
      exploitation on species with different biogeographical       
      distributions and life-history characteristics. 
+0

謝謝理查!我不知道有一個stringi包。 – 2014-12-07 20:25:11

+0

@ user3426338 - 我會檢查出來。學習功能需要一分鐘,因爲有很多功能,它們都快速發展。 – 2014-12-08 22:07:08

+0

謝謝。我決定只用linux命令行來完成它。我有大約5,700個文件進行預處理,它只是最簡單的方法[鏈接](http://unix.stackexchange.com/questions/171994/how-to-get-portion-of-lines-from-all-txt- files-in-a-directory/172004?noredirect = 1#comment284275_172004)但這對未來是很好的知識。 – 2014-12-09 00:29:53

3

這將讀取整個文件轉換成一個字符的長度矢量。

x <- readChar(file, file.info(file)$size)

+0

這個解決方案聽起來非常好。但是,如何將相同的輸出寫入文件?我使用了'write'命令,每行有文本後都會有空行。 – 2017-11-18 01:08:24