如何使用strsplit从这种类型的字符串中提取模式为NM_001291928(一次)和Adora1?
“ gene_id”“ NM_001291928”“; transcript_id”“ NM_001291928”“; gene_name”“ Adora1”“;”
我尝试过:
strsplit(as.character(mydf[,1]), split=';', fixed=TRUE)
第一次尝试至少将行分开,然后将我需要的内容子集化,但没有成功。
我有一个data.frame,其中有20.000行,具有与上一行相同的结构,但内容当然不同。
有人可以帮我吗?
提前谢谢
答案 0 :(得分:1)
我们可以使用正则表达式环视
library(stringr)
library(dplyr)
str_remove_all(str1, '"') %>%
str_extract_all("(?<=(gene_id|gene_name) )\\w+")
#[[1]]
#[1] "NM_001291928" "Adora1"
或使用strsplit
lapply(strsplit(gsub('"', '', str1), '[; ]+'), `[`, c(2, 6))
str1 <- '"gene_id ""NM_001291928""; transcript_id ""NM_001291928""; gene_name ""Adora1"";"'