我有 data.frame 看起来像这样:
v1 <- c(1:10)
v2 <- c(FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE)
dfb <- data.frame(v1, v2)
> dfb
v1 v2
1 1 FALSE
2 2 FALSE
3 3 TRUE
4 4 FALSE
5 5 FALSE
6 6 FALSE
7 7 TRUE
8 8 FALSE
9 9 FALSE
10 10 FALSE
我需要这些操作:
- 根据
V2
if将 data.frame 分割成区间TRUE
- 将是最后一个间隔元素
V2
的行TRUE
- 如果最后一个元素不是
TRUE
,它将被视为是(这可以通过添加TRUE
到最后一个向量位置来轻松实现) - 从创建的间隔打印
V1
为第一个和最后一个元素
完成此操作后,我的结果应如下所示:
> df_final
Vx Vy
1 3
4 7
8 10
我已经尝试过cumsum
向量v2
,但TRUE
值被视为第一个间隔元素而不是最后一个
> split(v2, cumsum(v2==TRUE))
$`0`
[1] FALSE FALSE
$`1`
[1] TRUE FALSE FALSE FALSE
$`2`
[1] TRUE FALSE FALSE FALSE