A named logical vector makes a filter easier to review than a hidden condition inside brackets.

Program

Play the script to change the minimum value and see the predicate drive the filtered result.

readable_filter.R
min_value <- 
values <- c(2, 4, 6, 8)
is_large <- values >= min_value
selected <- values[is_large]
count <- length(selected)
label <- paste("kept", count, sep = ":")
cat(label, "\n", sep = "")
min_value <- 
values <- c(2, 4, 6, 8)
is_large <- values >= min_value
selected <- values[is_large]
count <- length(selected)
label <- paste("kept", count, sep = ":")
cat(label, "\n", sep = "")
min_value <- 
values <- c(2, 4, 6, 8)
is_large <- values >= min_value
selected <- values[is_large]
count <- length(selected)
label <- paste("kept", count, sep = ":")
cat(label, "\n", sep = "")
predicate name `is_large` documents why each value is kept or dropped.
logical vector A logical vector can filter another vector of the same length.
readable review Naming the predicate gives reviewers an intermediate value to inspect.