我希望匹配多个字符串条件,然后在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
答案 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