我正在寻找匹配多个字符串条件,然后使用grepl查找R中的行的子集。我从another post找到了一个不错的解决方案,其中使用了一些特定的代码(但是您知道了):subset(GEMA_EO5, grepl(paste(l, collapse="|"),GEMA_EO5$RefSeq_ID))
我想知道是否可以在两列中使用grepl,而不是上面示例中的RefSeq_ID。也就是说,通过grepl通过任何其他方法。换句话说,我不仅要在l列中寻找选项,还要在两列(或许多列)中寻找。这可能吗?

例如:3列,a b和c。我想以这样的标准来选择T(第3行和第4行),尽管(3,b)中的格式为“T I”。它应该同时标识(4,a)和(3,b),因此与上一个问题的链接。我希望它在a列和AND列中查找,而不是一个或另一个。

    a    b     c

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

最佳答案

以下是一些演示数据,以说明其工作原理:

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

09-25 19:47