0

所以如果我有以下

list <- c("catdog","chicken","poop")
names <- c("Fabio","John","Jack")
df <- data.frame(names, list, stringsAsFactors=FALSE)

       names   list
1      Fabio catdog
2       John    cat
3       Jack    dog

假设列表是一列字符串。我想知道如何在“猫”“狗”作为一对出现一次后返回它们可能出现更多次的行。我试过了:

want <- c("cat","dog")
df[grepl(paste(want,collapse="&"),df$list),]

我知道这适用于“|” 由于某种原因,它不能与“&”一起使用。让我知道是否有人可以提供帮助。谢谢!

4

1 回答 1

0

这是一个选项,如果 'cat' 和 'dog' 都不能在单个字符串中重复。

df[grepl('(cat)|(dog).*(\\1|\\2)', df$list), ]
于 2014-07-14T19:51:37.970 回答