《R数据科学实战:工具详解与案例分析 》 —2.5 stringr字符处理工具

举报
华章计算机 发表于 2019/11/09 20:34:29 2019/11/09
【摘要】 本节书摘来自华章计算机《R数据科学实战:工具详解与案例分析》 一书中第二章,第2.5.1节,作者刘 健 邬书豪 。

2.5 stringr字符处理工具

与Hadley出品的其他tidy系列包一样,stringr也具有同样清晰的逻辑结构和参数设置。在stringr包中,函数的参数很少有超过三个的情况,各个常用的函数都只需要指定两到三个参数,这极大地简化了参数设置的过程。加之参数在结构和名称上的一致性,用户很容易就能做到融会贯通。stringr包总体来讲是将stringi总结并优化而来的一个包。简单的字符处理能力,可以极大地提高数据清理的效率。使用stringr包用户能够快速上手使用正则表达式,从而快速处理数据,同时对表达式的基本概念也能有一定的理解,为以后更复杂的任务做好铺垫。

2.5.1 baseR vs stringr

baseR中已存在一些使用正则表达式处理字符串的函数,例如,以grep为母函数的一众函数,包括最常用的gsub,等等。熟悉Linux系统的读者可能会觉得grep看起来很眼熟,这是因为R语言与其他编程语言一样,都借鉴了各种计算机语言的精华部分。表2-25列出了baseR中与字符串有关的函数及其与stringr包中相应函数的对比及小结。该表的意义在于,可以通过学习stringr包中的主要函数来帮助了解baseR包中的对应函数。因为stringr虽然简单易上手,但是在实际处理应用数据时,其在速度上会比baseR又略逊一筹,读者可以通过stringr包中的函数来练习字符处理的能力,在实际工作中使用baseR中的函数来执行具体任务。

表2-25 baseR和stringr包中字符串处理函数对比

image.png

 

下面的代码简略演示了str_replace和str_replace_all的区别以及参数设置。首先加载stringr包,然后创建一个练习用的字符串向量example_txt。对练习对象执行str_replace函数,参数pattern被设置为“a”—意为查询“a”第一次出现的位置,参数replacement设置为符号“@”—意为使用“@”来替代字母“a”。结果可以看到只有第一个“a”被替换,字符串中其他的“a”仍被保留。但是str_replace_all会将所有符合要求的部分全部替换掉。BaseR中的sub和gsub函数逻辑与str_replace和str_replace_all相同,只是包含了格外的参数设置来满足更复杂的任务需求。感兴趣的读者可以自行尝试。示例代码具体如下:

> library(stringr)

> example_txt <- "sub and gsub perform replacement of the first and all matches respectively."

> str_replace(string = example_txt,pattern = "a",replacement = "@")

## [1] "sub @nd gsub perform replacement of the first and all matches respectively."

> str_replace_all(string = example_txt,pattern = "a",replacement = "@")

## [1] "sub @nd gsub perform repl@cement of the first @nd @ll m@tches respectively."


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。