我正在寻找匹配多个字符串条件,然后使用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