R语言提取文字(字符串)中的内容--正则式(1)

news2024/11/18 6:23:55

科学研究中有时候咱们收集到的数据很乱,不能马上进行分析,如SEER数据,用过都知道,咱们需要对数据进行清洗,从数据中提取咱们需要的东西,才能进行分析,这时候有个有用的东西叫正则式,对于我们在字符串中提取数据非常实用,咱们分几章来介绍一下,今天讲讲正则式的基础,介绍一下常用的函数。

在这里插入图片描述
正则式各个语言的用法都差不多,今天来介绍一下常用的正则式函数,开始可能学得有点费力,但是你想学好R这是避不开的上坡路。
1. grep函数
grep(pattern,x)语句在字符串向量x里搜索给定子字符串pattern。如果x有n个元素,即包含n个字符串,则grep(pattern,x)会返回一个长度不超过n的向量。

看下面例子,简单来说就是grep函数在c(“Equator” ,“North Pole” , “South Pole” )这堆字符中搜索包含有Pole字符的内容,结果返回了位置,第二和第三个字符串符合。

grep("Pole",c("Equator" ,"North Pole" , "South Pole" ))

在这里插入图片描述
咱们把Pole的大写P换成小写p看看,这回就没有符合条件的,搜不到了

grep("pole",c("Equator" ,"North Pole" , "South Pole" ))

在这里插入图片描述
Grep函数有个延申函数,grepl函数,它返回的是T或者F,这个在编程中是很有用的,以后有空再说说。

grepl("Pole",c("Equator" ,"North Pole" , "South Pole" ))

在这里插入图片描述
Grep函数是查到需要字符的位置,而sub函数可以对查到的字符进行替换,但是在同一个字符串中相同的字符只替换第一个
我们把字符中的o替换成8,这里注意一下North Pole有两个o,只是替换了第一个

sub("o",8,c("Equator" ,"North Pole" , "South Pole" ))

在这里插入图片描述
而gsub函数只要匹配得上会全部替换

gsub("o",8,c("Equator" ,"North Pole" , "South Pole" ))

在这里插入图片描述
2. nchar函数
这个函数可以帮助我们计算字符中的字节或长度
可以看到函数算出了每个字符串的长度

x <- c("asfef", "qwerty", "yuiop[", "b", "stuff.blah.yech")
nchar(x)

在这里插入图片描述
还需要注意一点,如果x不是字符形式,nchar()会得到不可预料的结果。

3. paste函数
paste函数主要是把两个字符连接起来,有paste和paste0两种函数,用法抖差不多,在编程中paste函数可以说是应用得非常广泛,这里简单介绍一下。
咱们看到默认得连接符是空格,通过sep这个连接符不同得设置,得到得结果也是不同的。

paste("North" ,"Pole")
paste("North","Pole",sep="")
paste("North" ,"Pole",sep=".")
paste("North" ,"and" ,"South" ,"Poles")

在这里插入图片描述
4. sprintf函数
sprtintf函数可以把多个变量组成在一起,变成一个新的字符串,咱们在画森林图的时候,经常使用到这个函数。配合ifelse这个函数,用得效果很好。

i<-10
sprintf( "the square of %d is %d" ,i,i^2)

在这里插入图片描述
这个函数和上面几个函数稍有不同,我来解释一下,两个%d得部分等下是要被替换得,后面的i和i^2就是来替换两个%d的。这里有一些规则,d代表的是数字,s代表字符串,%d代表这个替换的是数字,%s表示替换的是字符

a <- "零基础说科研"
sprintf("This official account is %s",a)

在这里插入图片描述
如果你对表示的数字小数点有要求,可以使用%f来表示数字,下面是一些用法,自己体会一下

sprintf("%f", pi)
sprintf("%.3f", pi)
sprintf("%1.0f", pi)
sprintf("%5.1f", pi)
sprintf("%05.1f", pi)
sprintf("%+f", pi)
sprintf("% f", pi)
sprintf("%-10f", pi) # left justified

在这里插入图片描述
5. substr函数
这个函数主要是通过字符串的位置对字符进行提取,必须输入开始位置和结束位置

substr("abcdef", 2, 4)

在这里插入图片描述
意思是提取从第二个字符开始,到第四个字符中的内容,所以提取了bcd.
substr 函数还延申了一个substring函数,,相对于substr函数,substring函数函数只用输入开始位置,不用输入结束位置,它会自己默认为1000000位。

substring("abcdef",2)

在这里插入图片描述
咱们在文章《R语言forestploter包优雅的绘制孟德尔随机化研究森林图》中曾经使用stringr包的str_sub函数提取可信区间的数值,substr函数也一样可以做到,有兴趣的可以试一下,大家看这两个函数是不是很相似,就是位置互换一下。

在这里插入图片描述
6. strsplit函数
strsplit(x,split)函数根据x中的字符串split把字符串x拆分成若干子字符串。
可以看到被从e斩开了

x <- c(as = "asfef", qu = "qwerty", "yuiop[", "b", "stuff.blah.yech")
strsplit(x, "e")

在这里插入图片描述
这里我们可以扩展一下,空格也算一个字符,这样咱们可以写个小程序

strReverse <- function(x) sapply(lapply(strsplit(x, NULL), rev), paste, collapse = "")

咱们可以看一下,我们先用NULL把字符断开,就可以达到分割字符效果

strsplit(c("abc"),NULL)

在这里插入图片描述
接着我们使用lapply(strsplit(x, NULL), rev)把字符反转最后连接,可以得到字符反转的效果

strReverse(c("abc", "零基础说科研"))

在这里插入图片描述
下面咱们来深入一点
表示提取有a或u字符的内容

grep("[au]",c("Equator" , "North Pole" ,"South Pole"))

在这里插入图片描述
这里表示提取o开头,中间不限,e结尾的内容。第二和第三符合

grep("o.e",c("Equator" , "North Pole" , "South Pole"))

在这里插入图片描述
这句和上句相同,但是有两个点号,表示这是个4个字符的内容,只有2符合

grep("N..t",c("Equator" , "North Pole" , "South Pole"))

在这里插入图片描述
我们看到"abc" , “de”,"f.g"这三个字符中有点是含有点符号(.)的,假如咱们想提取有点符号(.)的内容怎么办,下面这样是错的

grep(".",c( "abc" , "de","f.g"))

在这里插入图片描述
因为点号属于一个字符,所以咱们要给他加个\来脱离字符的意思,那为什么下面咱们要加两个\呢,因为\也算一个字符,咱们还需要再加一个字符使它来脱离字符的意思,听起来有点拗口,有点难理解,不急,后面章节咱们会慢慢解释。

grep("\\.",c( "abc" , "de","f.g"))

在这里插入图片描述
今天咱们初步介绍了一些正则式的基础函数和内容,后面慢慢深入,未完待续。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1113034.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

中文编程工具开发语言编程案例:会员VIP管理系统软件实例

中文编程工具开发语言编程案例&#xff1a;会员VIP管理系统软件实例 中文编程工具开发语言编程案例&#xff1a;会员VIP管理系统软件实例。 软件功能&#xff1a; 1、系统设置&#xff1a;参数设定&#xff0c;账号及权限设置&#xff0c;系统初始化&#xff0c;卡类型设置&a…

通讯协议学习之路:IrDA协议协议理论

通讯协议之路主要分为两部分&#xff0c;第一部分从理论上面讲解各类协议的通讯原理以及通讯格式&#xff0c;第二部分从具体运用上讲解各类通讯协议的具体应用方法。 后续文章会同时发表在个人博客(jason1016.club)、CSDN&#xff1b;视频会发布在bilibili(UID:399951374) 序、…

Flutter的Invalid use of a private type in a public API警告

文章目录 问题描述有问题的源码 问题原因解决方法 问题描述 自己在写Flutter 应用时发现了一个Invalid use of a private type in a public API警告。 发现很多官方的例子也有这个问题。 有问题的源码 有问题的源码如下&#xff1a; class MyTabPage extends StatefulWid…

window系统如何管理多版本node

何时需要切换node版本 如果你正在维护一个旧项目&#xff0c;同时也在进行新项目&#xff0c;两个项目所依赖的node版本害不同&#xff0c;那么你可以就需要经常切换node版本。项目中可能依赖于某些npm包&#xff0c;而这些包对特定版本的Node有要求。需要满足这些要求以确保依…

UE4 UltrDynamicSky与场景物体进行交互

找到材质 找到其最父类的材质 把这个拖过去连上即可

Nvm管理NodeJs版本

文章目录 Nvm管理NodeJs版本一、前言1.简介2.环境 二、正文1.卸载NodeJs2.安装Nvm3.配置国内镜像4.Nvm使用5.其它1&#xff09;报错12&#xff09;报错2 Nvm管理NodeJs版本 一、前言 1.简介 Node Version Manager&#xff08;nvm&#xff09;可通过命令行快速安装和使用不同…

【数据库】拼接字段 使用别名

拼接字段 使用别名 e . g . e.g. e.g. Vendors 表包含供应商名和电话信息&#xff0c;name 和 mobile&#xff1b;需要输出这两个属性的值的组合作为供应商的基本信息组合。 SELECT concat(name, _, mobile) FROM Vendors; -- 语句通过 MySQL 环境下测试&#xff0c;其他 DBMS…

【CMN】Components组件汇总

CMN 700由各种类型的设备组成&#xff0c;包括路由器模块、CHI节点和网桥。所需要的组件取决于系统的需求&#xff0c;有些组件是可选的&#xff0c;或者只有在满足某些需求时才会使用。CMN 700可以集成到一个完整的SoC系统中&#xff0c;该系统还包括其他这里未描述到的设备。…

4.6 IPv6

思维导图&#xff1a; 4.6 IPv6 **IPv6简介** - IP 是互联网的核心协议。 - IPv4 是20世纪70年代末期设计的&#xff0c;到2011年2月其地址耗尽。 - 2014-2015年间&#xff0c;我国逐步停止向新用户分配IPv4地址&#xff0c;开始全面部署IPv6。 - IPv6 目的&#xff1a;解决I…

JDK安装后Path和java_home环境变量

1.Path环境变量 1.1Path环境变量用于记住程序路径&#xff0c;方便在命令行窗口的任意目录启动程序 举例&#xff1a;在命令行窗口的任意目录下启动QQ Path环境部变量的位置在&#xff1a;我的电脑->属性->高级系统设置->高级->环境变量 2.2Path环境变量的原理 …

(1)(1.7) GY-US42声纳

文章目录 前言 1 连接方式 2 参数说明 前言 GY-US042v2 声纳是一款非常便宜的短程&#xff08;最多 4m&#xff09;测距仪&#xff0c;主要设计用于室内&#xff0c;但也成功用于室外的 Copter。与许多气压计相比&#xff0c;它能更稳定地控制 4m 以下的高度。 1 连接方式…

《动手学深度学习 Pytorch版》 9.5 机器翻译与数据集

机器翻译&#xff08;machine translation&#xff09;指的是将序列从一种语言自动翻译成另一种语言&#xff0c;基于神经网络的方法通常被称为神经机器翻译&#xff08;neural machine translation&#xff09;。 import os import torch from d2l import torch as d2l9.5.1 …

【Linux】nginx基础篇 -- 介绍及yum安装nginx

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

1024程序节特辑:一文读懂小程序支付流程

小程序支付流程 概述前置准备登录流程调用wx.login()向微信服务器发送请求 支付流程调用wx.requestPayment()部分后台处理逻辑支付功能要求 支付流程面试题 主页传送门&#xff1a;&#x1f4c0; 传送 概述 小程序支付是由微信支付推出的一种便捷支付方式&#xff0c;通过扫码…

快速实现 RPC 微服务:使用 go-micro 从零开始

大家好&#xff0c;我是木川 本文将演示如何从 0 到 1 使用 go-micro 框架实现 RPC 微服务&#xff0c;包括服务端和客户端&#xff0c;客户端发送一个名字到服务端&#xff0c;服务端返回问候语。 一、创建项目 创建项目目录&#xff0c;使用 go mod 初始化 mkdir goexamples …

前端课后作业

2023.10.20 1、用列表实现如下效果 2、用表格实现如下效果 3、用表单实现如下效果 &#xff08;学到16集完成&#xff09;

阿里云10M带宽服务器价格、下载和上传速度限制说明

阿里云服务器10M带宽价格表年付85折&#xff0c;10M带宽一年优惠价5355元&#xff0c;10M带宽下载速度1280KB/秒&#xff0c;即1.25M/秒&#xff0c;阿腾云atengyun.com分享腾讯云服务器10M公网带宽优惠价格、流量价格、上传速度和下载速度限制&#xff1a; 目录 云服务器10M…

【小笔记】为什么语义相似度要用余弦相似度而不用欧式距离?

【学而不思则罔&#xff0c;思而不学则殆】 2023.10.20 语义相似度 相似文本&#xff0c;可以是语义上相似&#xff0c;可以是字符串相似&#xff0c;因此文本相似度包含了语义相似度。 传统的基于统计的文本相似度计算方法&#xff0c;如词频&#xff0c;词出现与否来表示文…

C51--简易报警器设计

硬件清单&#xff1a; C52单片机 震动传感器模块 433M无线发射接受模块 继电器模块 高功率喇叭 杜邦线 振动传感器控制灯&#xff1a; 如何知道是否发生震动&#xff1f;震动后的信号表示又是什么&#xff1f; 振动传感器模块产生震动&#xff0c;输出低电平&#xff0c;绿色指…

苹果cms模板MXone V10.6魔改版短视大气海报样式

苹果cms模板MXone V10.6魔改版短视大气海报样式 安装模板教程说明&#xff1a; 1、将模板压缩包上传到苹果cms程序/template下解压 2、网站板选择mxone 模板目录填写html 3、网站模板选择好之后一定要先访问前台&#xff0c;然后再进入后台设置 4、主题后台地址&#xff1…