R语言-正则表达式,替换
在R语言中使用正则表达式替换,可以使用sub()函数,用于全局替换则用gsub()函数。 1、例子假设有一个字符串向量,需要将多字节文本过滤出来: >a<-c("abcx9422",'女','男','女') 如果直接对其使用大小写转换函数toupper(),则会报错: > toupper(a) 如何将该多字节字符去掉呢?假定它是读数据文件引入,没有意义的。 2、过滤步骤思路:先将字符串向量转换为字符形式串,然后使用正则表达式替换,因为转换成字符串形式时,只能针对单个向量元素进行,故需要做一个函数,在使用lapply()作用于所有的向量元素。 (1)将字符串向量转换为字符串形式> deparse(a) (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))
|