首页 > 解决方案 > 从 data.farme 的行中拆分和子集

问题描述

如何使用 strsplit 从这种类型的字符串中提取模式为 NM_001291928(一次)和 Adora1?

"gene_id ""NM_001291928"";transcript_id ""NM_001291928"";gene_name ""Adora1"";"

我试过了:

  strsplit(as.character(mydf[,1]), split=';', fixed=TRUE)       

作为第一次尝试至少拆分行,然后对我需要的内容进行子集化,但没有成功。

我有一个具有 20.000 行的 data.frame,其结构与上面的行相同,但当然内容不同。

任何人都可以帮助我吗?

先感谢您

标签: r

解决方案


我们可以使用正则表达式环视

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

推荐阅读