gpt4 book ai didi

r - 以相同的顺序将模式的所有元素与向量匹配

转载 作者:行者123 更新时间:2023-12-03 18:34:03 26 4
gpt4 key购买 nike

我创建了一个函数 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) )
}
有没有更有效的解决方案,这个功能对我来说太慢了

最佳答案

我们可以对它们进行 paste 并使用 grepl

grepl(paste(pat, collapse=".*"), paste(dat, collapse=""))
#[1] TRUE
str_detect
library(stringr)
str_detect(paste(dat, collapse=""), paste(pat, collapse=".*"))
#[1] TRUE

关于r - 以相同的顺序将模式的所有元素与向量匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66446800/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com