R 在tibble中扩展过滤

R 在tibble中扩展过滤,r,dataframe,dplyr,tidyverse,R,Dataframe,Dplyr,Tidyverse,考虑以下问题: library(tidyverse) a <- tibble(id = 1:5, val = c(-1,-2,0,1,-1)) 库(tidyverse) a%min() a%>%切片(idx:nrow(a)) #一个tibble:3x2 id val 1 3 0 2 4 1.00 3 5 -1.00 我觉得在tidyverse中有一个更优雅的解决方案。有什么提示吗? 谢谢。我们可以在逻辑向量(val>=0)上使用cumsum)和slic

考虑以下问题:

library(tidyverse)
a <- tibble(id = 1:5, val = c(-1,-2,0,1,-1))
库(tidyverse)
a%min()
a%>%切片(idx:nrow(a))
#一个tibble:3x2
id val
1     3  0   
2     4  1.00
3     5 -1.00
我觉得在tidyverse中有一个更优雅的解决方案。有什么提示吗?
谢谢。

我们可以在逻辑向量(
val>=0)
上使用
cumsum
)和
slice
非0的元素

a %>% 
  slice(which(cumsum(val >=0)!=0))

或使用
过滤器

a %>%
  filter(cumsum(val>=0) > 0)
# A tibble: 3 x 2
#     id   val
#   <int> <dbl>
#1     3  0   
#2     4  1.00
#3     5 -1.00
a%>%
过滤器(总和(val>=0)>0)
#一个tibble:3x2
#id val
#    
#1     3  0   
#2     4  1.00
#3     5 -1.00
a %>%
  filter(cumsum(val>=0) > 0)
# A tibble: 3 x 2
#     id   val
#   <int> <dbl>
#1     3  0   
#2     4  1.00
#3     5 -1.00