【发布时间】:2021-03-02 20:38:25
【问题描述】:
我创建了一个函数yes.seq,它接受两个参数,一个模式pat 和数据dat。该函数以相同的顺序查找数据中是否存在模式
例如
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
因为这个序列在模式中和顺序相同
"a"“b”"c"“d”“e”“f”"g"“h”“i”“j”
例如,如果 'dat' 被反转,那么我们得到FALSE:
yes.seq(pat = pat, dat = rev(dat))
# [1] FALSE
这是我的功能
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) )
}
有没有更高效的解决方案,这个功能对我来说太慢了
【问题讨论】: