使用模式在两个文件之间grep

时间:2015-04-03 06:12:47

标签: r

我有两个文件,我想执行一个grep,其中file1是模式。我想从file2中提取与file1中的字符串匹配的行。 file1中的字符串位于以下列中:" Target.Gene"在file2中。我不知道如何使用这种类型的模式

文件1

> head(a)
  symbol
1   AGER
2  TCF21
3  CLDN5
4   CDH5
5    CA4
6  RAMP3

file2

 > head(MTI)
      miRTarBase.ID           miRNA Species..miRNA. Target.Gene Target.Gene..Entrez.ID. Species..Target.Gene.
    1    MIRT006481 hsa-miR-181a-5p    Homo sapiens       DUSP6                    1848          Homo sapiens
    2    MIRT000002  hsa-miR-20a-5p    Homo sapiens       HIF1A                    3091          Homo sapiens
    3    MIRT000006 hsa-miR-146a-5p    Homo sapiens       CXCR4                    7852          Homo sapiens
    4    MIRT000006 hsa-miR-146a-5p    Homo sapiens       CXCR4                    7852          Homo sapiens
    5    MIRT006511 hsa-miR-200b-3p    Homo sapiens        RND3                     390          Homo sapiens
    6    MIRT006477  hsa-miR-328-3p    Homo sapiens       PTPRJ                    5795          Homo sapiens
                                                          Experiments          Support.Type References..PMID.
    1                         Luciferase reporter assay//Western blot        Functional MTI          17382377
    2 Luciferase reporter assay//Western blot//Northern blot//qRT-PCR        Functional MTI          18632605
    3                qRT-PCR//Luciferase reporter assay//Western blot        Functional MTI          18568019
    4                                                      Microarray Functional MTI (Weak)          20375304
    5                                       Luciferase reporter assay        Functional MTI          20683643
    6                                           qRT-PCR//Western blot        Functional MTI          22564856

2 个答案:

答案 0 :(得分:2)

您也可以通过索引和使用%in%运算符直接找到子集。下面的代码将过滤MTI,以便结果数据框只有MTI行,其中Target.Gene是a和所有列中的基因之一。

result <- MTI[MTI$Target.Gene %>% a, ]

答案 1 :(得分:1)

我认为merge就是你需要的。这能否为您提供所需的结果:

mergedDat = merge(file1, file2, by.x="symbol", by.y="Target.Gene", all.x=TRUE)

这将返回file1的所有行,无论file1中的给定值是否与file2匹配。如果您只想要包含匹配项的行,请删除all.x=TRUE。请参阅merge的帮助,了解有关函数在不匹配时的作用的所有选项。