Skip to content

Instantly share code, notes, and snippets.

@ateucher
Last active May 10, 2019 18:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ateucher/6a172f7c76edd365494ef0539b892e08 to your computer and use it in GitHub Desktop.
Save ateucher/6a172f7c76edd365494ef0539b892e08 to your computer and use it in GitHub Desktop.
rle
values <- runif(100)

# get runs where values > 0.75 (these are TRUE/FALSE)
runs <- rle(values > 0.75)

# Mask out the runs with lengths < 3
runs$values[runs$lengths < 3] <- FALSE

# Get a vector of positions that meet the run criteria
masked <- inverse.rle(runs)

masked
#>   [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#>  [12] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#>  [23] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#>  [34] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#>  [45] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE
#>  [56] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#>  [67] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#>  [78] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#>  [89] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE
#> [100] FALSE

# The above gives TRUE/FALSE but can convert to TRUE/NA like the 
# original solution
masked[!masked] <- NA

masked
#>   [1]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
#>  [15]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
#>  [29]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
#>  [43]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA TRUE TRUE TRUE   NA
#>  [57]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
#>  [71]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
#>  [85]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA TRUE TRUE TRUE
#>  [99]   NA   NA

Created on 2019-05-10 by the reprex package (v0.2.1)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment