R grep在向量中找到多个完整的单词
R grep find multiple complete words in vector
我有一个字符串向量,比如说:
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))
但是,
- 问题一: 有没有direct grep 命令可以实现?
- 问题 2:假设我想查找这两个词的出现次数,但顺序是给定的(例如,"oxido" 后跟 "magnesio",所以正确答案是
2
和 5
)。命令是什么?
谢谢,
编辑。
答案 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"
我有一个字符串向量,比如说:
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))
但是,
- 问题一: 有没有direct grep 命令可以实现?
- 问题 2:假设我想查找这两个词的出现次数,但顺序是给定的(例如,"oxido" 后跟 "magnesio",所以正确答案是
2
和5
)。命令是什么?
谢谢,
编辑。
答案 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"