从点向量创建连续线列表

时间:2014-03-18 22:16:58

标签: r

很抱歉,如果这个问题含糊不清,我搜查了一下,无法找到一个anser。我有一些看起来像这样的数据:

x = c(1,2,3,4,5,6,7,8,9,10)

y = c(T,T,T,F,F,T,T,F,F,T)

我想加入" TRUE"指向我可用于绘图的连续向量列表。即,像这样的列表(带有一些额外的填充):

$`1`
[1] 0.5 3.5

$`2`
[1] 5.5 7.5

$`3`
[1]  9.5 10.5

我知道我可以在for循环中执行此操作,但我有很多数据点,我想知道是否有一些智能矢量操作我可以做。

1 个答案:

答案 0 :(得分:2)

尝试使用rle

ry <- rle(y)
out <- split(x[y], rep(seq_along(ry$values), ry$lengths)[y])

#$`1`
#[1] 1 2 3
#
#$`3`
#[1] 6 7
#
#$`5`
#[1] 10

lapply(out, function(x) range(x) + c(-0.5,0.5))

#$`1`
#[1] 0.5 3.5
#
#$`3`
#[1] 5.5 7.5
# 
#$`5`
#[1]  9.5 10.5