如何从"Gm"
开始仅使用data1[,7]
开始查找所有基因名称。
我尝试了data2[grep("^Gm",data2$Genes),];
,但它提取了以"Gm"
开头的整行。
data1[,7] <-
[1] "Ighmbp2,Mrpl21,Cpt1a,Mtl5,Gal,Ppp6r3,Gm23940,Lrp5"
[2] "Gm5852,Gm5773,Tdpoz4,Tdpoz3,Gm9116,Gm9117,Tdpoz5"
[3] "Arhgap15,Gm22867"
答案 0 :(得分:3)
一个选项是将字符串(strsplit(..
)拆分为,
,然后在输出中提取单词(这是一个列表,因此可以使用lapply
) &#34; GM&#34;使用grep
。 (^
- 表示单词/字符串的开头)
lapply(strsplit(Genes, ','), function(x) grep('^Gm', x, value=TRUE))
#[[1]]
#[1] "Gm23940"
#[[2]]
#[1] "Gm5852" "Gm5773" "Gm9116" "Gm9117"
#[[3]]
#[1] "Gm22867"
或者您可以从stri_extract_all
stringi
提取单词
library(stringi)
stri_extract_all_regex(Genes, 'Gm[[:alnum:]]+')
或者,如果您需要它作为向量,您可以在上面的输出中使用unlist
或使用gsub
删除那些不以&#34; Gm&#34开头的词; (\\b(?!Gm)\\w+\\b
)和,', then use
扫描`。
scan(text=gsub('\\b(?!Gm)\\w+\\b|,', ' ',
Genes, perl=TRUE), what='', quiet=TRUE)
#[1] "Gm23940" "Gm5852" "Gm5773" "Gm9116" "Gm9117" "Gm22867"
如果您需要删除以Gm
scan(text=gsub('\\bGm\\w+\\b|,', ' ', Genes, perl=TRUE),
what='', quiet=TRUE)
# [1] "Ighmbp2" "Mrpl21" "Cpt1a" "Mtl5" "Gal" "Ppp6r3"
# [7] "Lrp5" "Tdpoz4" "Tdpoz3" "Tdpoz5" "Arhgap15"
Genes <- c("Ighmbp2,Mrpl21,Cpt1a,Mtl5,Gal,Ppp6r3,Gm23940,Lrp5",
"Gm5852,Gm5773,Tdpoz4,Tdpoz3,Gm9116,Gm9117,Tdpoz5",
"Arhgap15,Gm22867")