2011-05-17 99 views
3

我正在尋找一種簡單的方法來用普通字母替換所有帶點的字母。例如,我想將föó更改爲foo。我可以這樣做:R:用普通字母替換所有帶點的字母

gsub("ö|ó","o","föó") 

但是,對於每個可能的標點符號都可能需要大量的手動工作。有沒有辦法自動做到這一點?

+1

的重音符號和其他符號稱爲*變音符號* – Henry 2011-05-17 22:31:29

回答

9

你可以嘗試這樣一些變化:

cleanString <- function(x){ 
     tmp <- iconv(x, from="UTF8", to ="ASCII//TRANSLIT") 
     gsub("[^[:alpha:]]", "", tmp) 
     } 

x = "föó" 

cleanString(x) 

[1] "foo" 

想法用iconv從Remove diacritics from a string

+0

應該採取特徵向量(即'X = c(「föó」,「zöó」)')。 – Greg 2011-05-17 17:20:12

+0

謝謝,看起來真棒。雖然我用'ü'嘗試時獲得了NA,但是:'cleanString('ü')' – 2011-05-17 18:21:07

+0

@Sacha - 它適用於我。不幸的是,我有一種感覺,它會依賴於系統。 – Greg 2011-05-17 18:42:28