在R中的数据帧的列中间匹配字符串的子集



我需要从R中的数据帧中为包含uniprot/swiss-prot:ID的列子集。该列还包含其他ID。下面是一个例子:

biogrid:107054|entrez gene/locuslink:BAK1|uniprot/swiss-prot:Q16611|refseq:NP_001179

我需要以下输出:

Q16611

您可以使用-

x <- 'biogrid:107054|entrez gene/locuslink:BAK1|uniprot/swiss-prot:Q16611|refseq:NP_001179'
sub('.*swiss-prot:(\w+)\|.*', '\1', x)
#[1] "Q16611"

这将在文本中的swiss-prot:|之后提取一个单词。

为了将此应用于数据帧列,您可以执行-

df$result <- sub('.*swiss-prot:(\w+)\|.*', '\1', df$col)

使用str_extract

library(stringr)
str_extract(x, "(?<=prot:)\w+")
[1] "Q16611"

数据

x <- 'biogrid:107054|entrez gene/locuslink:BAK1|uniprot/swiss-prot:Q16611|refseq:NP_001179'

最新更新