2015-06-18 2 views
0

Итак, у меня есть кадр данных, в котором один из столбцов имеет характер типа, состоящий из строк. Я хочу найти те строки, где встречаются «foo» и «bar», но бар также может появляться до foo. В принципе, как оператор И для регулярных выражений. Как мне это сделать?Как сгладить два слова в строковых данных?

ответ

2

Вы можете попробовать

rowIndx возвращает логическое TRUE/FALSE, которая может быть использована для подмножества седловины. (комментарии от @ Konrad Rudolph). Если вам нужен числовой индекс, просто оберните его which, то есть which(rowIndx)

+1

«Кому» обычно не нужно: результат, вероятно, будет использоваться для индексации таблицы в любом случае. –

+0

Да, это сработает. Спасибо – carrotflowers

+0

@ KonradRudolph Я думал, что OP хочет индекс строки – akrun

1

Регулярные выражения плохо работают при логических операциях. Ваш частный случай, однако, может быть тривиальным реализовано следующим выражением:

(foo.*bar)|(bar.*foo) 

Однако, это очень неэффективный регулярное выражение, и я настоятельно рекомендуем использовать его. На практике вы должны использовать решение akrun из комментария: grep для них индивидуально и пересечь результат (или сделать логические grepl и & результаты, которые семантически сменяются).

Смежные вопросы