在多个向量中搜索序列

时间:2015-08-07 09:45:54

标签: regex r

在不使用循环的情况下,在R中的多个向量中找到我需要的序列的最简单方法是什么? 例如,我需要找到他们的“雅虎”在“谷歌”之后出现的向量(只有订单很重要)。

seq = c("google","yahoo")

匹配

vec1 = c("smth","google","smth","yahoo","smth")

不匹配:

vec2 = c("smth","yahoo","smth","google","smth")

2 个答案:

答案 0 :(得分:2)

选中此项,假设您拥有yahoo和google的唯一值:

library(dplyr)


dt = data.frame(vec1 = c("smth","google","smth","yahoo","smth"))

dt = dt %>% mutate(row = row_number()) # get the row number for each value of vec1

dt$row[dt$vec1=="google"] < dt$row[dt$vec1=="yahoo"] # returns T/F

如果您没有唯一的vec1值,请修改此值。这个使用最大行号:

dt = data.frame(vec1 = c("smth","google","smth","yahoo","smth"))

dt = dt %>% mutate(row = row_number()) %>% 
  group_by(vec1) %>% summarise(row = max(row)) # get the max row number for each unique value of vec1

dt$row[dt$vec1=="google"] < dt$row[dt$vec1=="yahoo"]

答案 1 :(得分:1)

您可以使用哪个功能查找给定向量中搜索词的位置

which(vec1=="google")[1] < which(vec1=="yahoo")[1]

如果您只对每个搜索字词的第一次出现感兴趣,请使用[1]。