如何grep字符串数据中的两个单词?
所以我有一个数据帧,其中一列是character类型,由字符串组成。我想找到那些“foo”和“bar”同时出现的行,但是bar也可以出现在foo之前。基本上类似于正则表达式的AND运算符。我该怎么做?你可以试试如何grep字符串数据中的两个单词?,r,R,所以我有一个数据帧,其中一列是character类型,由字符串组成。我想找到那些“foo”和“bar”同时出现的行,但是bar也可以出现在foo之前。基本上类似于正则表达式的AND运算符。我该怎么做?你可以试试 rowIndx <- grepl('foo', df$yourcol) & grepl('bar', df$yourcol) rowIndx您可以试试 rowIndx <- grepl('foo', df$yourcol) & grepl('bar',
rowIndx <- grepl('foo', df$yourcol) & grepl('bar', df$yourcol)
rowIndx您可以试试
rowIndx <- grepl('foo', df$yourcol) & grepl('bar', df$yourcol)
rowIndx正则表达式不擅长逻辑运算。但是,您的特定情况可以通过以下表达式实现:
(foo.*bar)|(bar.*foo)
然而,这是一个非常低效的正则表达式,我强烈建议不要使用它。实际上,您可以使用akrun在注释中给出的解决方案:grep
分别对它们进行处理,并与结果相交(或者对结果执行逻辑grepl
和&
处理,这在语义上是可交换的)。正则表达式不擅长逻辑运算。但是,您的特定情况可以通过以下表达式实现:
(foo.*bar)|(bar.*foo)
然而,这是一个非常低效的正则表达式,我强烈建议不要使用它。在实践中,您可以使用akrun在注释中的解决方案:grep
分别对它们进行处理,并与结果相交(或者对结果进行逻辑grepl
和&
处理,这在语义上是可交换的)。通常不需要的:结果可能会被用于索引表。是的,行了。Thanks@KonradRudolph我认为OP需要行索引,而通常是不必要的:结果可能会被用来索引一个表。是的,这样就可以了。Thanks@KonradRudolph我以为OP想要行索引