ID EN
Math Functions

Extremes

R Base 3.6.2

Returns the (regular or parallel) maxima and minima of the input values. pmax*() and pmin*() take one or more vectors as arguments, recycle them to common length and return a single vector giving the ‘parallel’ maxima (or minima) of the argument vectors.

Syntax

R
max(…, na.rm = FALSE)
min(&#8230;, na.rm = FALSE)<p></p><p>pmax(&#8230;, na.rm = FALSE)
pmin(&#8230;, na.rm = FALSE)</p><p>pmax.int(&#8230;, na.rm = FALSE)
pmin.int(&#8230;, na.rm = FALSE)</p>

Arguments

Parameter Description
&#8230; numeric or character arguments (see Note).
na.rm a logical indicating whether missing values should be removed.

Return Value

For min or max, a length-one vector. For pmin or pmax, a vector of length the longest of the input vectors, or length zero if one of the inputs had zero length. The type of the result will be that of the highest of the inputs in the hierarchy integer < double < character. For min and max if there are only numeric inputs and all are empty (after possible removal of NAs), the result is double (Inf or -Inf).

Details

max and min return the maximum or minimum of all the values present in their arguments, as integer if all are logical or integer, as double if all are numeric, and character otherwise. If na.rm is FALSE an NA value in any of the arguments will cause a value of NA to be returned, otherwise NA values are ignored. The minimum and maximum of a numeric empty set are +Inf and -Inf (in this order!) which ensures transitivity, e.g., min(x1, min(x2)) == min(x1, x2). For numeric x max(x) == -Inf and min(x) == +Inf whenever length(x) == 0 (after removing missing values if requested). However, pmax and pmin return NA if all the parallel elements are NA even for na.rm = TRUE. pmax and pmin take one or more vectors (or matrices) as arguments and return a single vector giving the ‘parallel’ maxima (or mi

Examples

Example
R
# NOT RUN {
require(stats); require(graphics)
 min(5:1, pi) #-> one number
pmin(5:1, pi) #->  5  numbers

x <- sort(rnorm(100));  cH <- 1.35
pmin(cH, quantile(x)) # no names
pmin(quantile(x), cH) # has names
plot(x, pmin(cH, pmax(-cH, x)), type = "b", main =  "Huber's function")

cut01 <- function(x) pmax(pmin(x, 1), 0)
curve(      x^2 - 1/4, -1.4, 1.5, col = 2)
curve(cut01(x^2 - 1/4), col = "blue", add = TRUE, n = 500)
## pmax(), pmin() preserve attributes of *first* argument
D <- diag(x = (3:1)/4) ; n0 <- numeric()
stopifnot(identical(D,  cut01(D) ),
          identical(n0, cut01(n0)),
          identical(n0, cut01(NULL)),
          identical(n0, pmax(3:1, n0, 2)),
          identical(n0, pmax(n0, 4)))
# }

See Also

range (both min and max) and which.min (which.max) for the arg min i.e. the location where an extreme value occurs. ‘plotmath’ for the use of min in plot annotation.