[R]中两列的字符串匹配

时间:2013-06-03 13:16:04

标签: string r string-matching

我希望匹配多个字符串条件,然后在R中对行进行子集化,使用grepl查找匹配项。我找到了another post的一个很好的解决方案,其中使用了一些特定的代码(但你明白了):subset(GEMA_EO5, grepl(paste(l, collapse="|"),GEMA_EO5$RefSeq_ID))

我想知道是否可以在两列中进行grepl,而不仅仅是上面示例中的RefSeq_ID。也就是说,在grepl中通过任何其他方法。换句话说,我想在l中查找选项,而不仅仅是在一列中,而是在两列中(或者多列中)。这可能吗?

例如:3列,a b和c。尽管(3,b)中的格式为“T I”,但我希望选择T(第3行和第4行)的标准。它应该识别(4,a)和(3,b),因此链接到前一个问题。我希望它在列a和列b中查找,而不是一个或另一个。

    a    b     c

    A    A C   P L
    V    V B   W E E
    W    T I   P J G
    T    W P   J

1 个答案:

答案 0 :(得分:6)

以下是一些演示数据以展示其工作原理:

set.seed(1234)
dat <- data.frame(A = sample(letters[1:3],10,TRUE),
                  B = sample(letters[1:3],10,TRUE))

在我看来,使用[子集可以更加清晰 - 我们可以使用grepl根据匹配项给出逻辑向量,并使用|组合两个测试(在多列上)。如果您想要在任一列中包含“a”的所有行的子集:

dat.a <- dat[with(dat, grepl("a", A)|grepl("a", B)),]
  A B
1 b a
2 b a
3 a c
5 a a
9 a a