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.

lower

(integer(1))
Lower bound.

upper

(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