You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何提取向量中两个指定字符串之间的基因名

R提取目标基因名的实现方法

现有测试向量如下:

dat1 <- c('human(display_long)|uniprotkb:ESR1(gene name)')
dat2 <- c('human(display_long)|uniprotkb:TP53(gene name)')
dat3 <- c('human(display_long)|uniprotkb:GPX4(gene name)')
dat4 <- c('human(display_long)|uniprotkb:ALOX15(gene name)')
dat5 <- c('human(display_long)|uniprotkb:PGR(gene name)')
dat <- c(dat1,dat2,dat3,dat4,dat5)

方法1:基础R原生实现(无需额外依赖)

使用sub()函数结合正则捕获组实现提取:

gene_names <- sub("human\\(display_long\\)\\|uniprotkb:(.*?)\\(gene name\\)", "\\1", dat)

正则说明:\\(、\\)、\\|是对原始字符串中特殊符号的转义,(.*?)为非贪婪捕获组,匹配两个固定分隔串中间的基因名,\\1表示取第一个捕获组的内容作为替换结果。

运行后gene_names即为提取到的基因名向量,输出结果为:

[1] "ESR1"   "TP53"   "GPX4"   "ALOX15" "PGR"

方法2:stringr包实现(tidyverse生态)

如果使用tidyverse工具链,可通过正向后视/前瞻断言更直观实现匹配:

library(stringr)
gene_names <- str_extract(dat, "(?<=human\\(display_long\\)\\|uniprotkb:).*?(?=\\(gene name\\))")

得到的结果和基础R方法完全一致。


内容的提问来源于stack exchange,提问作者pengxianglan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 01:09:01