R:字符串截取和匹配

本文介绍了R语言中用于字符串截取的函数,如substr和substring,以及如何使用do包进行字符串操作。此外,通过str_match利用正则表达式进行灵活的字符串匹配和提取,并展示了如何将结果转换为数据框。还讨论了gsub函数在截取特定字符前的字符串中的应用,以及grepl函数在字符串匹配中的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 在指定位置截取字符串-substr() & substring() & do包 & gsub()

#substr必须设置参数first和last,否则出错
> substr("1234567",3,5)
[1] "345"
#substring可以只设置first参数,last参数缺省时则默认为1000000,指字符串的最大长度。
> substring("1234567",3)
[1] "34567"

R基础|do包(1):左截取、右截取、中间截取-腾讯云开发者社区-腾讯云 (tencent.com)

2.根据正则表达式灵活截取字符串-str_match()

library(stringr)
#提取字符串内容但无标签
> str_match(string = "ID=12-3456;name=Griffy;age=0",
+           pattern ="ID=(.*);name=(\\w+);") #.*表示匹配多个任意字符;\\w+表示匹配多个字母或数字
     [,1]                      [,2]      [,3]    
[1,] "ID=12-3456;name=Griffy;" "12-3456" "Griffy"

#提取字符串的同时给提取内容加上标签(格式:(?<标签名>匹配模式))
> str_match(string = "ID=12-3456;name=Griffy;age=0",
+           pattern ="ID=(?<ID>.*);name=(?<name>\\w+);")
                               ID        name    
[1,] "ID=12-3456;name=Griffy;" "12-3456" "Griffy"
#上述得到的数据类型为matrix,也可以进一步转化为数据框的格式方便后续操作
ID_name <- str_match(string = "ID=12-3456;name=Griffy;age=0",
          pattern ="ID=(?<ID>.*);name=(?<name>\\w+);")
ID_name <- data.frame(ID_name)

3.截取特定字符前面的字符串-gsub()

#截取"ABC"
m <- "ABC CDE"
#gsub()用""替换" (.*)"空格加任意字符
a <- gsub(pattern = " (.*)", "", m)
#得到的a为character

4.字符串匹配-grepl

> grepl("G", "Griffy")
[1] TRUE
> grepl("G",c("Griffy","Grape","sky"))
[1]  TRUE  TRUE FALSE
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值