1. R语言中grep函数和gsub()函数的使用

2023-11-09

1.grep 函数

1)语法结构

grep(pattern, x, ignore.case = FALSE, perl = FALSE, value = FALSE, fixed = FALSE, useBytes = FALSE, invert = FALSE)
各参数的含义如下:
(1)pattern: 字符串类型,正则表达式,指定搜索模式,当将fixed参数设置为TRUE时,也可以是一个待搜索的字符串。
(2)x : 字符串向量,用于被搜索的字符串。
(3)ignore.case: 是否忽略大小写。为FALSE时,大小写敏感,为TRUE时,忽略大小写。
(4)perl: 用于指定是否Perl兼容的正则表达式
(5)value:逻辑值,为FALSE时,grep返回搜索结果的位置信息,为TRUE时,返回结果位置的值
(6)fixed:逻辑值,为TRUE时,按pattern指定的字符串进行原样搜索,且会忽略产生冲突的参数设置。
(7) useBytes:逻辑值,如果为真,则按字节进行匹配,而不是按字符进行匹配。
(8)invert:逻辑值,如果为TRUE,则返回未匹配项的索引或值,也就是反向搜索

2) 案例学习

(1)提取gene1到gene40中末尾是3的基因,提取末尾不是3的基因,提取末尾是3但不是gene3的基因.

geen = paste0("gene",1:40)
# 或者str_c("gene",1:40) # 注意:library(stringr)
1. 含有3的基因
geen[grep("3",geen)]  # grep("3",geen,value = T)
# [1] "gene3"  "gene13" "gene23" "gene30" "gene31"
# [6] "gene32" "gene33" "gene34" "gene35" "gene36"
# [11] "gene37" "gene38" "gene39"
2.末尾是3的基因
geen[grep("3$",geen)] # 或者grep("3$",geen,value = T)
# [1] "gene3"  "gene13" "gene23" "gene33"
3.末尾不是3的基因
geen[-grep("3$",geen)] # 或者 grep("3$",geen,invert = T,value = TRUE)
# [1] "gene1"  "gene2"  "gene4"  "gene5"  "gene6" 
# [6] "gene7"  "gene8"  "gene9"  "gene10" "gene11"
# [11] "gene12" "gene14" "gene15" "gene16" "gene17"
# [16] "gene18" "gene19" "gene20" "gene21" "gene22"
# [21] "gene24" "gene25" "gene26" "gene27" "gene28"
# [26] "gene29" "gene30" "gene31" "gene32" "gene34"
# [31] "gene35" "gene36" "gene37" "gene38" "gene39"
# [36] "gene40"
4.提取末尾是3但不是gene3的基因.
grep("[0-9]3$",geen,value = TRUE) 或者 setdiff(grep("3$",geen,value = T),"gene3")
# [1] "gene13" "gene23" "gene33"

3) grep 和grepl的区别

1.语法结构
grep(pattern, x, ignore.case = FALSE, perl = FALSE, value = FALSE, fixed = FALSE, useBytes = FALSE, invert = FALSE);

grepl(pattern, x, ignore.case = FALSE, perl = FALSE, fixed = FALSE, useBytes = FALSE)

2. 返回值
grep函数:在向量x中寻找含有特定字符串(pattern参数指定)的元素,返回其在x中的下标;
grepl函数:返回逻辑向量(TRUEFALSE),即是否包含pattern

2. gsub()函数

gsub()可以用于字段的删减、增补、替换和切割,可以处理一个字段也可以处理由字段组成的向量。

1.用法:gsub(“目标字符”, “替换字符”, 对象)

text1 <- "ABcdEfgh . ljkl MNNM"
gsub("Efg","RRR",text1)  # #将Efg改为RRR,区分大小写

# 任何符号,包括空格、Tab和换行都是可以识别的
gsub(" l","q",text1)   # #可识别空格
# [1] "ABcdEfgh .qjkl MNNM"

# 同时字符可以识别多个,进行批量置换
gsub("M","O",text1)
# [1] "ABcdEfgh . ljkl ONNO"

# 除此之外,gsub还有其他批量操作的方法
gsub("^.*l(j).*$","\\1",text1) ##只保留一个j
# [1] "j"

gsub("^.* ", "a", text1) #选择从开头到最后一个空格(注意字符"^.* "后引号前有一个空格)替换为a
# [1] "aMNNM"

gsub(" .*","a",text1)  #第一个空格直达结尾替换成a

gsub("\\..*","\\+",text1)  # #句号.和加号+是特殊的,要添加\\来识别
# [1] "ABcdEfgh +"

gsub("\\ ..*","",text1)
# [1] "ABcdEfgh"

gsub("\\.","\\+",text1)
# [1] "ABcdEfgh + ljkl MNNM"
gsub("\\s","a",text1)
# [1] "ABcdEfgha.aljklaMNNM"

2. 特殊字符

Syntax	Description
\\d	Digit, 0,1,2 ... 9
\\D	Not Digit
\\s	Space
\\S	Not Space
\\w	Word
\\W	Not Word
\\t	Tab
\\n	New line
^	Beginning of the string
$	End of the string
\	Escape special characters, e.g. \\ is "\", \+ is "+"
|	Alternation match. e.g. /(e|d)n/ matches "en" and "dn"
•	Any character, except \n or line terminator
[ab]	a or b
[^ab] Any character except a and b
[0-9]	All Digit
[A-Z]	All uppercase A to Z letters
[a-z]	All lowercase a to z letters
[A-z]	All Uppercase and lowercase a to z letters
i+	i at least one time
i*	i zero or more times
i?	i zero or 1 time
i{n}	i occurs n times in sequence
i{n1,n2}	i occurs n1 - n2 times in sequence
i{n1,n2}?	non greedy match, see above example
i{n,}	i occures >= n times
[:alnum:]	Alphanumeric characters: [:alpha:] and [:digit:]
[:alpha:]	Alphabetic characters: [:lower:] and [:upper:]
[:blank:]	Blank characters: e.g. space, tab
[:cntrl:]	Control characters
[:digit:]	Digits: 0 1 2 3 4 5 6 7 8 9
[:graph:]	Graphical characters: [:alnum:] and [:punct:]
[:lower:]	Lower-case letters in the current locale
[:print:]	Printable characters: [:alnum:], [:punct:] and space
[:punct:]	Punctuation character: ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~
[:space:]	Space characters: tab, newline, vertical tab, form feed, carriage return, space
[:upper:]	Upper-case letters in the current locale
[:xdigit:]	Hexadecimal digits: 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f

3. sub()和gsub()函数有什么区别

text <- c("we are the world", "we are the children")
sub("w", "W", text)  #第一个句子有两个w,但sub()只识别第一个相应的字符
# [1] "We are the world"    "We are the children"
sub("W","w",text)
# [1] "we are the world"    "we are the children"
gsub("W","w",text) #gsub()识别全部对应的字符
# [1] "we are the world"    "we are the children"
gsub("w","W",text) 
# [1] "We are the World"    "We are the children"

1.sub()和gsub()的区别在于,前者只替换第一次匹配的字符串,而后者会替换掉所有匹配的字符串。
2.gsub()是对向量里面的每个元素进行搜素,如果发现元素里面有多个位置匹配了模式,则全部进行替换,而grep()也是对向量里每个元素进行搜索,但它仅仅知道元素是否匹配了模式(并返回该元素在向量中的下标),但具体元素中匹配了多少次却无法知道。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1. R语言中grep函数和gsub()函数的使用 的相关文章

  • Rstudio更换主题/样式

    github项目地址 https github com gadenbuie rsthemes 安装 在 rstudio 的控制台console中数据 install packages devtools devtools install gi
  • 【生信原理】初探芯片表达谱分析

    初探芯片表达谱分析 文章目录 初探芯片表达谱分析 实验目的 实验内容 实验题目 实验过程 数据的获取 解压与读取 数据预处理 背景纠正 标准化和探针信号汇总等 数据过滤 探针过滤 探针注释 添加基因注释信息 limma差异分析 差异表达基因
  • R语言描述性统计

    使用Hmisc这个包 只需要调用 my data read csv test csv Hmisc describe my data 可以打印出各个变量的均值方差等信息
  • R语言数据拆分

    博主的话 大家好 这里是bio 先赞后看养成习惯 还没关注的小伙伴点点关注不迷路 今天是南方的小年 祝福大家小年快乐 目录 博主的话 前言 一 split 函数 二 subset 函数 总结 前言 今天继续学习R语言 我们之前已经介绍过了数
  • 使用R语言的names函数为DataFrame数据中的所有列进行重命名

    使用R语言的names函数为DataFrame数据中的所有列进行重命名 在R语言中 DataFrame是一种常用的数据结构 用于存储和处理表格型数据 有时候 我们需要为DataFrame中的列重新命名 以便更好地理解和处理数据 这时可以使用
  • 三句话,我让R语言自动升级了

    R语言是为数学研究工作者设计的一种数学编程语言 主要用于统计分析 绘图 数据挖掘 跟所有计算机语言一样 R语言也面临升级的问题 本文讲述了最快捷的升级R语言办法 不用重新安装之前的安装包 首先 进入R交互模式 然后三条命令搞定 instal
  • 如何用R分析CNKI文献关键词词频?

    疑惑 如何用VOSviewer分析CNKI数据 一文发布后 有同学问我 王老师 我有个问题 我用cnki导出关键词后 想统计关键词的词频 我应该用什么样的工具 如果不利用citespace和python 做出excel那种的统计表格 该怎么
  • 生信技能树R语言学习

    一 数据类型和向量 1 数据类型 1 1 判断数据类型class 1 2 按Tab键自动补全 1 3 数据类型的判断和转换 1 is 族函数 判断 返回值为TRUE或FALSE is numeric 123 is character a i
  • 802.11K/V/R协议介绍

    802 11K V R协议介绍 1 传统无线漫游介绍 1 1 什么是无线漫游 一台无线终端备 STA 通过连接Wi Fi获取上网体验 Wi Fi名称 又称为SSID 是由无线接入网 AP 提供的 因为一台AP设备的覆盖范围有限 所以无线网络
  • 如何编写R函数

    转载自http blog sciencenet cn blog 255662 501317 html R语言实际上是函数的集合 用户可以使用base stats等包中的基本函数 也可以自己编写函数完成一定的功能 但是初学者往往认为编写R函数
  • ggplot2作图之系统发育树

    library ape tree lt read tree text A B C D E F G H I J K L M N O P library ggtree ggtree tree branch length none ladderi
  • 转载:R语言绘图—图形标题、坐标轴设置

    R语言绘图是通过函数命令及相应参数设置实现的 如plot x y plot为绘图函数命令 x y则是绘图参数 指定了绘图的数据向量 但这种最基本的绘图设置很难满足个性化绘图的要求 我们需要根据需要对图形元素进行设置 图形元素是各类图形的基本
  • R语言GGPLOT2绘制圆环图雷达图/星形图/极坐标图/径向图Polar Chart可视化分析汽车性能数据

    最近我们被客户要求撰写关于可视化的研究报告 包括一些图形和统计输出 漂亮的圆形图 我不确定对数据分析师本身是否有额外的好处 但如果能吸引决策者的注意 那对我来说就是额外的价值 然而 用coord polar 或偶尔发现的ggplot2中的c
  • R语言 write.xlsx() 写入同一excel,及同一sheet注意

    write xlsx x file sheetName Sheet1 col names TRUE row names TRUE append FALSE showNA TRUE 1 想要将data1写da xlsx的sheet1 data
  • R语言聚类分析

    本文首发于公众号 医学和生信笔记 完美观看体验请至公众号查看本文 文章目录 系统聚类 层次聚类 Hierarchical clustering 快速聚类 划分聚类 partitioning clustering K means聚类 围绕中心
  • R----stringr包介绍学习

    1 stringr介绍 stringr包被定义为一致的 简单易用的字符串工具集 所有的函数和参数定义都具有一致性 比如 用相同的方法进行NA处理和0长度的向量处理 字符串处理虽然不是R语言中最主要的功能 却也是必不可少的 数据清洗 可视化等
  • [R语言] R语言PCA分析教程 Principal Component Methods in R

    R语言PCA分析教程 Principal Component Methods in R 代码下载 主成分分析Principal Component Methods PCA 允许我们总结和可视化包含由多个相互关联的定量变量描述的个体 观察的数
  • 2021-05-03

    一 R中安装 phyloseq 的方法 很多网上的教程使用的都是 source https bioconductor org biocLite R biocLite phyloseq 但是我尝试了很多次 最后还是没有成功 下面能成功安装 p
  • R语言——基本操作(一)

    目录 一 基本操作 二 R包的安装及使用 三 获取帮助 四 内置数据集 五 数据结构 六 向量索引 七 向量运算 参考 Rstudio 控制台常用快捷键 Ctrl 查看所有历史记录 比直接使用 查找更方便 Esc 中断操作 可中断未完成的操
  • R语言采集获取58商铺出租转让信息

    前两篇文章给我一个朋友分析出店铺商品以及地址房源信息 后来去看了下店铺房租有点贵 还是毛坯房 要自己装修 本着节约成本的原则 熬了个通宵 给他采集了一些转租商铺数据 因为数据比较多 过于先进不方便展示 我就将我爬虫程序的模版展示给大家观看

随机推荐

  • react基础06--react综合案例-电商网站导航

    react基础06 react综合案例 电商网站导航 1 介绍 2 案例设计模块 2 1 分类导航数据模型设计 2 2 一级分类导航切换高亮效果 2 3 显示二级分类导航 2 4 路由跳转到二级导航的商品列表 2 5 商品搜索 3 注意事项
  • Go语言面试题--基础语法(29)

    文章目录 1 下面的代码有什么问题 2 下面代码最后一行输出什么 请说明原因 3 下面代码有什么问题 4 下面的代码输出什么 1 下面的代码有什么问题 func main data int 1 2 3 i 0 i fmt Println d
  • U-Boot启动流程详解

    参考 U Boot顶层目录链接脚本文件 u boot lds 介绍 作者 一只青木呀 发布时间 2020 10 23 13 52 23 网址 https blog csdn net weixin 45309916 article detai
  • VAR模型

    文章目录 一 VAR是什么 1 引入库 2 读入数据 3 执行程序 总结 一 VAR是什么 以金融价格为例 传统的时间序列模型比如ARIMA ARIMA GARCH等 只分析价格自身的变化 模型的形式为 其中称为自身的滞后项 但是VAR模型
  • Navicat安装教程

    众所周知 Navicat是一款轻量级的用于MySQL连接和管理的工具 非常好用 使用起来方便快捷 简洁 下面我会简单的讲一下其安装以及使用的方法 并且会附带相关的永久安装教程 简介 一般我们在开发过程中是离不开数据库的 Navicat是一款
  • svn: Can't find a temporary directory 问题解决

    Error Can t find temporary directory internal error 然后试了下其他的SVN源 发现均无法提交 并且update时也出现上面的错误信息 对比项目文件时出现 不能创建目录或文件 公司网站首页正
  • Nginx集群+websocket 获取websocket客户端的真实IP

    Nginx增加如下配置 proxy set header Host host proxy set header X Real IP remote addr proxy set header REMOTE HOST remote addr p
  • UMI多环境配置

    一般来说项目不止有dev和prod两个环境 umi可以通过环境变量 UMI ENV 区分不同环境来指定配置 需求 三套环境 gt 本地测试环境local 测试发布环境testbuild 正式环境probuild 1 在根目录新建 umirc
  • 云计算基础——云计算与移动互联网、物联网

    8 1 云计算与移动互联网 8 1 1 移动互联网的发展概况 移动互联网的发展概况 移动互联网是指以宽带IP为技术核心 可同时提供语音 数据 多媒体等业务服务的开什么是移动互联网 放式基础电信网络 从用户行为角度来看 移动互联网广义上是指用
  • shell命令以及运行原理(详解)

    Linux严格意义上说的是一个操作系统 我们称之为 核心 kernel 但我们一般用户 不能直接使用kernel 而是通过kernel的 外壳 程序 也就是所谓的shell 来与kernel沟通 1 从技术角度 Shell的最简单定义 命令
  • Redis实践(一):安装和部署

    memcache redis mongodb 是目前常用的内存数据库 他们应用的场景大致如下 redis 数据量较小的更性能操作和运算上 memcache 用于在动态系统中减少数据库负载 提升性能 做缓存 提高性能 适合读多写少 对于数据量
  • __builtin_expect, __builtin_unreachable和__builtin_prefetch

    builtin expect 该指令是gcc引入的 就是允许代码编写者把最有可能执行的分支告诉编译器 标准写法是 bultin expect exp n 意思是exp n的概率很大 这样编译器可以对代码进行优化 减少指令跳转带来的性能下降
  • elasticsearch bulk批量增删改(超详细)

    一 bulk的操作类型 1 1批量增 语法一 index操作 可以是创建文档 也可以是全量替换文档 类似于普通的put操作 POST bulk index index test index type test type id 12 scor
  • java调用串口,开箱即用

    作者 刘东标 撰写日期 2022 08 02 开发遇到问题 1 供应商提供的动态库各种底层代码有问题 指针也不对 参数也乱 加上长年不维护动态库 2 解决多个动态库问题 不同供应商提供动态库也不同 32位动态库和64位动态库 还有是供应商的
  • Python -BS4详细介绍

    Python BS4详细介绍 Python 在处理html方面有很多的优势 一般情况下是要先学习正则表达式的 在应用过程中有很多模块是非常方便的 先尝试使用BeautifulSoup和Urllib进行网页的处理 仅供学习 首先列举所需要导入
  • flutter 边框_Flutter作息定时器 app

    背景知识视频教程 学习Flutter Dart构建iOS和Android应用 国外课栈 viadean com Flutter Dart 完整的Flutter应用开发课程 国外课栈 viadean com Flutter的实际项目 国外课栈
  • 【OSATE学习笔记】失效模式与影响分析,FMEA(failure mode and effects analysis)

    目录 参考文献 简介 FMEA显著的作用案例 案例一 案例二 案例三 FMEA目标 FMEA进程 风险 Risk FMEA的特点及作用 FMEA的特点 FMEA的分类 专业术语 DFMEA与PFMEA的差别 六西格玛 SIX SIGMA 嵌
  • PHP内核探索:Apache运行与钩子函数

    Apache是目前世界上使用最为广泛的一种Web Server 它以跨平台 高效和稳定而闻名 按照去年官方统计的数据 Apache服务器的装机量占该市场60 以上的份额 尤其是在X Unix Linux 平台上 Apache是最常见的选择
  • 已解决(from docx import Document导包报错)ModuleNotFoundError: No module named ‘exceptions‘

    已解决 from docx import Document导包报错 ModuleNotFoundError No module named exceptions 文章目录 报错代码 报错翻译 报错原因 解决方法 千人全栈VIP答疑群联系博主
  • 1. R语言中grep函数和gsub()函数的使用

    1 grep 函数 1 语法结构 grep pattern x ignore case FALSE perl FALSE value FALSE fixed FALSE useBytes FALSE invert FALSE 各参数的含义如