我目前正在运行以下代码来清除重音字符中的数据:
df <- gsub('Á|Ã', 'A', df)
df <- gsub('É|Ê', 'E', df)
df <- gsub('Í',   'I', df)
df <- gsub('Ó|Õ', 'O', df)
df <- gsub('Ú',   'U', df)
df <- gsub('Ç',   'C', df)但是,我希望只在一行中完成它(使用另一个函数就可以了)。我该怎么做?
发布于 2013-12-04 19:43:00
试试像这样的东西
iconv(c('Á'), "utf8", "ASCII//TRANSLIT")您只需向c()添加更多元素即可。
编辑:它依赖于机器,请检查help(iconv)
以下是R解决方案
mychar <- c('ÁÃÉÊÍÓÕÚÇ')
iconv(mychar, "latin1", "ASCII//TRANSLIT") # one line, as requested
[1] "AAEEIOOUC"发布于 2013-12-04 19:46:03
这是一个编码问题,通常通过指示正确的编码来解决。如果您仍然希望使用正则表达式来执行此操作,则可以使用gsubfn编写一个线性解决方案:
library(gsubfn)
ll <- list('Á'='A', 'Ã'='A', 'É'='E',
           'Ê'='E', 'Í'='I', 'Ó'='O',
           'Õ'='O', 'Ú'='U', 'Ç'='C')
gsubfn('Á|Ã|É|Ê|Í|Ó|Õ|Ú|Ç',ll,'ÁÃÉÊÍÓÕÚÇ')
[1] "AAEEIOOUC"
gsubfn('Á|Ã|É|Ê|Í|Ó|Õ|Ú|Ç',ll,c('ÁÃÉÊÍÓÕÚÇ','ÍÓÕÚÇ'))
[1] "AAEEIOOUC" "IOOUC"   发布于 2013-12-04 19:39:34
一种选择可以是chartr
> toreplace <- LETTERS
> replacewith <- letters
> (somestring <- paste(sample(LETTERS,10),collapse=""))
[1] "MUXJVYNZQH"
> 
> chartr(
+   old=paste(toreplace,collapse=""),
+   new=paste(replacewith,collapse=""),
+   x=somestring
+   )
[1] "muxjvynzqh"https://stackoverflow.com/questions/20384282
复制相似问题