2017-07-30 67 views
-1

在R中,我想讀取僅包含字符的.txt文件,但是,在兩者之間沒有空格。我可以根據英語字典在R中區分嗎?例如,「oneshoulddothatheshouldalwayslearn」輸出應該是「一個應該做的是他總是學習」感謝在R中,讀取.txt文件中的單詞之間沒有空格?

+0

read.txt文件不能指定英文字典單詞。你可以用逗號,分號或任何字符串標記來分隔它們。 –

+5

你確定它是「做那個」而不是「點頭帽子」? –

+2

你有這樣的文件意味着它創建時出錯了。專注於修復該過程並再次創建文件。 – Roland

回答

6

這裏是一個函數,它是:

unmash <- function(original, sofar=c(), rest=original, words){ 
    for(L in 1:nchar(rest)){ 
     finding = substr(rest,1,L) 
     m = grep(paste0("^",finding,"$"), words) 
     if(length(m)>0){ 
      rest2 = substr(rest,L+1,nchar(rest)) 
      if(rest2==""){ 
       message("Original: ",original," = ",paste(c(sofar,finding),collapse=",")) 
      }else{ 
       unmash(original, c(sofar,finding), rest2, words) 
      } 
     } 
    } 
} 

你需要一個單詞表。我得到這個:

words = function(f){ 
    w = scan(f,what="") 
    w = w[nchar(w)>1] 
    w = c(w,"a","i","o") 
    w 
} 
wordlist= words("/usr/share/dict/words") 

其中該文件是一個標準的Unix文件,每行一個字。然而,它幾乎包含每一個字母作爲一個單詞,所以上面的函數除了a,i和o之外的大部分都被刪除了。

這裏有你的榜樣我的功能運行 - 注意有五種可能分裂成是我的詞典有效的話:

> test = "oneshoulddothatheshouldalwayslearn" 
> unmash(test, words=wordlist) 
Original: oneshoulddothatheshouldalwayslearn = one,should,do,that,he,should,always,learn 
Original: oneshoulddothatheshouldalwayslearn = one,should,dot,ha,the,should,always,learn 
Original: oneshoulddothatheshouldalwayslearn = one,should,dot,hat,he,should,always,learn 
Original: oneshoulddothatheshouldalwayslearn = one,should,doth,a,the,should,always,learn 
Original: oneshoulddothatheshouldalwayslearn = one,should,doth,at,he,should,always,learn 
> 
相關問題