根据条件 [R] 创建 names/indices 个向量重叠片段的列表

Create a list of names/indices of overlapping fragments of vector based on condition [R]

我想对 R 中的长向量执行滑动 window 分析。这样做时,我想检查该向量的给定片段是否包含特定值。

下面我粘贴了一个可重现的例子。该向量 (vctr) 包含 77 个元素(0 或 1)。我正在分析它,滑动 window 包含 10 个项目(段),重叠包含 5 个元素(重叠)。

我知道如何检查给定片段是否包含特定值(在本例中为 1)(split_vctr)。不过我还想做点别的,就是:

我想创建一个新变量(列表或向量),仅包含满足给定标准的那些片段的索引(在这种情况下:至少包含一个等于 1 的值;在这种情况下:TRUE ).

假设初始列表将被命名 - 我如何才能只提取真实的片段名称?

非常感谢您的帮助。

虚拟数据:

# dummy vector
vctr <- c(rep(0, 11), rep(1, 4), rep(0, 25), rep(1, 3), rep(0, 31),rep(1, 3))

# split parameters:
segment <- 10 # length of each segment
overlap <- 5 # length of each overlapping part

#finding coordinates
start_coordinates <- seq(1, length(vctr), by=segment-overlap)
end_coordinates   <- start_coordinates + segment - 1

#check whether splitted vector fragments meet a condition
split_vctr <- lapply(1:length(start_coordinates), function(i) 1 %in% vctr[start_coordinates[i]:end_coordinates[i]])
which(unlist(split_vctr))

将 return split_vctr 的索引为 TRUE

如果 split_vctr 本身被命名,您可以使用这些索引来提取 TRUE 片段的名称,如下所示:

names(split_vctr)[which(unlist(split_vctr))]