grep只与模式

时间:2016-03-16 08:06:50

标签: regex r

我想将与我的模式toMatch精确匹配的rownames grep。

toMatch <- c("I-A", "I-AA", "I-AAA")
dat[grep(toMatch, rownames(dat)), ]

DAT

hsa-miR-10b-5p_TACCCTGTAGAACCGAATTTGTAA_0;I-AA;0;g           3.939829e-01
hsa-miR-122-5p_TGGAGTGTGACAATGGTGTTTGATA_0;I-ATA;0;0         3.942306e-01
hsa-miR-122-5p_TGGAGTGTGGCAATGGTGTTTGAAA_10GA;I-AAA;0;0      3.948047e-01

 hsa-miR-10b-5p_TACCCTGTAGAACCGAATTTGTAA_0;I-AA;0;g           3.939829e-01
 hsa-miR-122-5p_TGGAGTGTGGCAATGGTGTTTGAAA_10GA;I-AAA;0;0      3.948047e-01

2 个答案:

答案 0 :(得分:5)

你想要grepl,因为它返回一个T / F字符串。 grep / grepl只接受单个字符串作为输入,它不能采用向量,可以添加| (意思或)不同的事物之间的grep。

dat[grepl("I-A|I-AA|I-AAA", rownames(dat)), ]

答案 1 :(得分:2)

stringr适合处理字符串,

dat <- dat[str_detect(dat$V1, toMatch),]
dat
#                                                       V1        V2
#1      hsa-miR-10b-5p_TACCCTGTAGAACCGAATTTGTAA_0;I-AA;0;g 0.3939829
#3 hsa-miR-122-5p_TGGAGTGTGGCAATGGTGTTTGAAA_10GA;I-AAA;0;0 0.3948047