Filters vector x to only keep elements which are in bounds [lower, upper]. This is equivalent to the following, but tries to avoid unnecessary allocations:

 x[!is.na(x) & x >= lower & x <= upper]


Currently only works for integer x.

keep_in_bounds(x, lower, upper)

## Arguments

x :: integer() Vector to filter. :: integer(1) Lower bound. :: integer(1) Upper bound.

## Value

(integer()) with only values in [lower, upper].

## Examples

keep_in_bounds(sample(20), 5, 10)#> [1] 10  6  7  9  8  5