5

我正在寻找匹配多个字符串条件,然后使用 grepl 来查找 R 中的行子集来查找匹配项。我从另一篇文章中找到了一个很好的解决方案,其中使用了一些特定的代码(但你明白了):subset(GEMA_EO5, grepl(paste(l, collapse="|"),GEMA_EO5$RefSeq_ID))

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

例如:3 列,ab 和 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
4

1 回答 1

6

这里有一些演示数据来展示它是如何工作的:

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

在我看来,使用[to subset 可以更清楚地说明这一点 - 我们可以使用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
于 2013-06-03T13:33:42.010 回答