在R中的0-1向量中找到精确的向量(有一个)

时间:2018-11-13 18:35:23

标签: r rstudio

我想在另一个向量内找到一个向量。我将始终寻找零和一的向量内只有“一”的向量。 例如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)-> 错误

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

或通过向量的splitrleid,然后检查是否找到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)