R数据科学-第十章 使用stringr处理字符串(上)

今天是生信星球陪你的第170天

你想找辆共享单车,发现满街都是别家车,没有一辆你能骑。

你想学点生信,搜了“初学者教程”,满眼尽是高大上,没有一句能看懂。

终于你跨越茫茫宇宙,来到生信星球,发现了初学者的新大陆!

惨兮兮啊!我排版用的那个工具坏掉了!今天这个排版丑哭了。上次我发的168天,由于涉及到了一些财务数据,被我404了。修改后的请看:

1.准备工作

library(tidyverse)

library(stringr)

2.字符串基础

单引号和双引号没有区别

转义符号\,对于反斜杠和引号需要转义。可是我这里发现了一个问题,理论上

应该是正确的双引号,然而并不是,用就对了。

理论上没有转义符号的计算机看到的是这样的

原文说,“如果想要查看字符串的初始内容,可以使用writelines() 函数”,实际上意思应该是去掉转义符号和引号,只显示单纯的转义后的字符串,也就是计算机看到的内容。

洲更大神解答了这个问题:

是的,你看到的带了转义符号,计算机看到的是转义成功的!

几种特殊符号:

2.1字符串长度

手动数了一下,发现空格也算一个字符长度。

2.2 字符串组合与拆分

其实我觉得更恰当的说法应该是连接。

处理NA,

函数是向量化的,它可以自动循环短向量,使得其与最长的向量具有相同的长度。

也就是说,你要连接一个含有c(a,b)和x,就会把a和b拆开,后面各自加上x。

同理前后连接也是一样的:

这段代码我一开始没有看懂

然后把birthday改成了TRUE试试:

只要认清birthday是个逻辑值就懂咯,不懂就改改看。

拆分

要想将字符向量合并为字符串,可以使用collapse() 函数:

2.3 用str_sub() 函数来提取字符串的一部分

2.4 区域设置

蒙在这个题目上的应该不止我自己吧。

意思是不同语言的转换大小写和排序,语言有自己的编码标准ISO 639 ,比如英语是en。

想知道什么意思,猜并试试

排序:

英文的排序是a-z这样。其他语言不知道。

3.使用正则表达式进行模式匹配

通过str_view() 和str_view_all() 函数来学习正则表达式。这两个函数接受一个字符向量和一个正则表达式,并显示出它们是如何匹配的。

3.1 基础匹配

精确匹配字符串:

用"."任意字符匹配(除了换行符):

好像是同一个字符串里只匹配一次哦。看banana其实可以匹配到两次

观察细致·洁

需要匹配”.“需要用正则表达式转义:

搜索一个"."

中间的反斜杠和“.”连起来表示一个正常的点儿。第一个反斜杠表示匹配。

四个反斜杠表示匹配一个普通的反斜杠!

后两个表示一个正常的反斜杠,前两个表示匹配用的正常的反斜杠,啊。

3.3 锚点--以什么开头,或以什么结尾

• ^ 从字符串开头进行匹配。

• $ 从字符串末尾进行匹配。

强制正则表达式匹配一个完整字符串。

3.5 字符类与字符选项

|连接两个不同的匹配,用括号使表达更清晰,(类似于加减乘除是否需要加括号,优先级)

3.7 重复

控制一个模式能匹配多少次

• ?:0 次或1 次。

• +:1 次或多次。

• *:0 次或多次。

精确设置匹配的次数。

• :匹配n 次。

• :匹配n 次或更多次。

• {,m}:最多匹配m 次。

• :匹配n 到m 次。

如果你选的是一个区间,正则表达式会匹配尽量长。在表达式后面加一个?可以改为匹配尽量短。

3.9分组与回溯引用

fruit是个自带的向量,括号表示优先级,\1表示作为一组,第一个反斜线表示转义。

做了以下尝试:

,去掉match,只匹配到连续的anan

去掉一个点,匹配到了叠字

去掉match,去掉点,只显示匹配到的所有叠字

隔壁生信技能树公益视频合辑(学习顺序是linux,r,软件安装,geo,小技巧,ngs组学!)

国内看B站,教学视频链接:https://m.bilibili.com/space/338686099

国外看YouTube,教学视频链接:https://m.youtube.com/channel/UC67sImqK7V8tSWHMG8azIVA/playlists

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181028G0004500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券