我想在另一个向量内找到一个向量。我将始终寻找零和一的向量内只有“一”的向量。 例如c(0,0,1,1,1,0,1)内部的c(1,1,1)。 我已经想出了一个解决方案:
grepl(粘贴(x1,collapse =“;”),粘贴(x2,collapse =“;”))
问题是我想搜索精确矢量
c(0,1,1,0)内部的c(1,1)-> TRUE
在c(0,1,1,1)内的c(1,1)-> 错误
答案 0 :(得分:1)
为此,我们可以使用rle
f1 <- function(vec1, patvec) {
with(rle(vec1), lengths[as.logical(values)]) == length(patvec)
}
f1(v1, pat)
#[1] TRUE
f1(v2, pat)
#[1] FALSE
或通过向量的split
来rleid
,然后检查是否找到all
个模式向量的元素
any(sapply(split(v1, data.table::rleid(v1)), function(x) all(pat %in% x)))
#[1] TRUE
pat <- c(1, 1)
v1 <- c(0,1,1,0)
v2 <- c(0,1,1,1)