2011-05-17 66 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