2015-05-26 2 views
3

У меня есть вектор строк, говорят:R Grep найти несколько полных слова в векторе

vect<-c("oxidor magnesio","oxido magnesio","oxido calcio", "oxidante","oxido calcio magnesio","magnesio oxido") 

Я хотел бы найти вхождения обоих слов, "oxido" и "magnesio". Что я делаю

intersect(grep("\\boxido\\b",vect),grep("\\bmagnesio\\b",vect)) 

Но

  1. Вопрос 1: есть ли прямой Grep команду для ее достижения?
  2. Вопрос 2: предположим, что я хочу, чтобы найти вхождения обоих слов, но в определенном порядке (скажем, к примеру, «оксидо» с последующим «magnesio», так что правильный ответ будет 2 и 5). Какая команда?

Спасибо,

ответ

5

Edit. Ответ 1: Я знаю, что grepl способен что, например .:

> grepl("(?=.*\\boxido\\b)(?=.*\\bmagnesio\\b)", vect, perl = TRUE) 
[1] FALSE TRUE FALSE FALSE TRUE TRUE 

Ответ 2:

> grep("\\boxido\\b.*\\bmagnesio\\b",vect,v=T) 
[1] "oxido magnesio"  "oxido calcio magnesio" 
+0

Спасибо. Я попробовал просто «grep», но потерялся в скобках и вопросительных знаках :) –

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