基于FALSE / TRUE模式拆分逻辑向量

时间:2017-05-05 13:48:11

标签: r vector split

给定逻辑向量x

x <- c(FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, 
       FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE)

如何根据每个x模式拆分FALSE/TRUE?当然,我们可以使用TRUE/FALSE基于!x模式进行拆分。

因此,拆分会搜索模式FALSE, FALSE, ..., FALSE , TRUE, TRUE, ..., TRUE,直到我们再次到达FALSE。在这一点上,我们停下来。换句话说,每当我们从TRUE移动到FALSE时,我们都会进行拆分。

以下是我最终的结果:

p <- which(diff(x)==-1)+1
split(x, cumsum(seq_along(x) %in% p))

所以输出是正确的:

# $`0`
# [1] FALSE FALSE FALSE  TRUE  TRUE

# $`1`
# [1] FALSE FALSE  TRUE

# $`2`
# [1] FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE

# $`3`
# [1] FALSE  TRUE

此问题的任何其他解决方案?更有效的方法吗?

0 个答案:

没有答案