加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

R语言-正则表达式,替换

发布时间:2020-12-14 00:57:21 所属栏目:百科 来源:网络整理
导读:在R语言中使用正则表达式替换,可以使用sub()函数,用于全局替换则用gsub()函数。 1、例子 假设有一个字符串向量,需要将多字节文本过滤出来: a-c("abcx9422",'女','男','女') 如果直接对其使用大小写转换函数toupper(),则会报错: toupper(a) Error in t

在R语言中使用正则表达式替换,可以使用sub()函数,用于全局替换则用gsub()函数。

1、例子

假设有一个字符串向量,需要将多字节文本过滤出来:

>a<-c("abcx9422",'女','男','女')

如果直接对其使用大小写转换函数toupper(),则会报错:

> toupper(a)
Error in toupper(a) : 多字节字符串1有错

如何将该多字节字符去掉呢?假定它是读数据文件引入,没有意义的。

2、过滤步骤

思路:先将字符串向量转换为字符形式串,然后使用正则表达式替换,因为转换成字符串形式时,只能针对单个向量元素进行,故需要做一个函数,在使用lapply()作用于所有的向量元素。

(1)将字符串向量转换为字符串形式

> deparse(a)
[1] "c("abcx9422","女","男","女")"

(2)使用正则表达式替换,首先替换掉"符号,然后再替换掉多字节字符(模式为:xd{2},也就是x加两个字符)

sub(""","",deparse(p))

sub("\xd{2}",'',sub(""",deparse(p))

(3)封装成处理函数

b<-function(p){sub("\xd{2}",deparse(p))}

(4)将字符串处理函数应用到向量

lapply(a,FUN=b)

(5)将结果列表转换为向量

> unlist(lapply(a,FUN=b))
[1] "abc22" "女" "男" "女"

(6)完整的表达式

> b<-function(p){sub("\xd{2}",deparse(p))}

> a2<-unlist(lapply(a,FUN=b)) > a2 [1] "abc22" "女" "男" "女" >

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读