Search code examples
rminimum

Better way to find a minimum value that fits a condition?


I can't get past the feeling that I am missing something obvious. Is there a clearer or more idiomatic way to do what the following function does?

closest.preceding <- function(candidates, limit) {
    # return the value in candidates that is closest to but less than the limit
    return(limit - min(limit-candidates[candidates < limit]))
}

Thanks for any insight.


Solution

  • You could do:

    max(candidates[candidates<limit])
    

    Which first filters out just those candidates that are (strictly) less than the limit, and then takes the max of those (which much be the closest).

    I'm sure there are other ways too.