从data.farme的行拆分和子集

时间:2018-09-12 15:24:54

标签: r

如何使用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行,具有与上一行相同的结构,但内容当然不同。

有人可以帮我吗?

提前谢谢

1 个答案:

答案 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"";"'