首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场

级联gsub
EN

Stack Overflow用户
提问于 2013-12-04 19:34:04
回答 4查看 616关注 0票数 3

我目前正在运行以下代码来清除重音字符中的数据:

代码语言:javascript
运行
复制
df <- gsub('Á|Ã', 'A', df)
df <- gsub('É|Ê', 'E', df)
df <- gsub('Í',   'I', df)
df <- gsub('Ó|Õ', 'O', df)
df <- gsub('Ú',   'U', df)
df <- gsub('Ç',   'C', df)

但是,我希望只在一行中完成它(使用另一个函数就可以了)。我该怎么做?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-12-04 19:43:00

试试像这样的东西

代码语言:javascript
运行
复制
iconv(c('Á'), "utf8", "ASCII//TRANSLIT")

您只需向c()添加更多元素即可。

编辑:它依赖于机器,请检查help(iconv)

以下是R解决方案

代码语言:javascript
运行
复制
mychar <- c('ÁÃÉÊÍÓÕÚÇ')
iconv(mychar, "latin1", "ASCII//TRANSLIT") # one line, as requested
[1] "AAEEIOOUC"
票数 5
EN

Stack Overflow用户

发布于 2013-12-04 19:46:03

这是一个编码问题,通常通过指示正确的编码来解决。如果您仍然希望使用正则表达式来执行此操作,则可以使用gsubfn编写一个线性解决方案:

代码语言:javascript
运行
复制
library(gsubfn)
ll <- list('Á'='A', 'Ã'='A', 'É'='E',
           'Ê'='E', 'Í'='I', 'Ó'='O',
           'Õ'='O', 'Ú'='U', 'Ç'='C')
gsubfn('Á|Ã|É|Ê|Í|Ó|Õ|Ú|Ç',ll,'ÁÃÉÊÍÓÕÚÇ')
[1] "AAEEIOOUC"
gsubfn('Á|Ã|É|Ê|Í|Ó|Õ|Ú|Ç',ll,c('ÁÃÉÊÍÓÕÚÇ','ÍÓÕÚÇ'))
[1] "AAEEIOOUC" "IOOUC"   
票数 3
EN

Stack Overflow用户

发布于 2013-12-04 19:39:34

一种选择可以是chartr

代码语言:javascript
运行
复制
> 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"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20384282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档