R grep在向量中找到多个完整的单词

Pav*_*ive 3 r intersect

我有一个字符串向量,说:

vect<-c("oxidor magnesio","oxido magnesio","oxido calcio", "oxidante","oxido calcio magnesio","magnesio oxido")
Run Code Online (Sandbox Code Playgroud)

我想找到两个词的出现,"oxido""magnesio".我正在做的是

intersect(grep("\\boxido\\b",vect),grep("\\bmagnesio\\b",vect))
Run Code Online (Sandbox Code Playgroud)

但,

  1. 问题1:有没有直接的 grep命令来实现它?
  2. 问题2:假设我想找到两个单词的出现次数,但是按照给定的顺序(例如,"oxido"后跟"magnesio",所以正确的答案是25).命令是什么?

谢谢,

Ale*_*tov 5

编辑.答案1:我知道grepl能够做到这一点,例如:

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

答案2:

> grep("\\boxido\\b.*\\bmagnesio\\b",vect,v=T)
[1] "oxido magnesio"        "oxido calcio magnesio"
Run Code Online (Sandbox Code Playgroud)