在不使用循环的情况下,在R中的多个向量中找到我需要的序列的最简单方法是什么? 例如,我需要找到他们的“雅虎”在“谷歌”之后出现的向量(只有订单很重要)。
seq = c("google","yahoo")
匹配
vec1 = c("smth","google","smth","yahoo","smth")
不匹配:
vec2 = c("smth","yahoo","smth","google","smth")
答案 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]。