我需要从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'