I created a function yes.seq that takes two arguments, a pattern pat and data dat. The function looks for the presence of a pattern in the data and in the same sequence
for example
dat <- letters[1:10]
dat
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
pat <- c('a',"c","g")
yes.seq(pat = pat,dat = dat)
# [1] TRUE
because this sequence is in the pattern and in the same order
"a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
If, for example, 'dat' is reversed, then we get FALSE:
yes.seq(pat = pat, dat = rev(dat))
# [1] FALSE
Here is my function
yes.seq <- function(pat , dat){
lv <- rep(F,length(pat))
k <- 1
for(i in 1:length(dat)){
if(dat[i] == pat[k])
{
lv[k] <- TRUE
k <- k+1
}
if(k==length(pat)+1) break
}
return( all(lv) )
}
Are there any more efficient solutions, this function is too slow for me