max and min return the maximum or minimum of all
  the  values present in their arguments, as integer if
  all are integer, 
  or as double otherwise.  The minimum and maximum of an empty set are +Inf and -Inf
  (in this order!) which ensures transitivity, e.g.,
  min(x1, min(x2)) == min(x1,x2).
  In Rversions before 1.5, min(integer(0)) == .Machine$integer.max,
  and analogously for max, preserving argument type,
  whereas from Rversion 1.5.0, max(x) == -Inf and
  min(x) == +Inf whenever length(x) == 0 (after removing
  missing values if requested).
  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.
  pmax and pmin take several vectors (or matrices) as arguments and
  return a single vector giving the parallel maxima (or minima) of the
  vectors.  The first element of the result is the maximum (minimum) of
  the first elements of all the arguments, the second element of the
  result is the maximum (minimum) of the second elements of all the
  arguments and so on.  Shorter vectors are recycled if necessary.  If
  na.rm is FALSE, NA values in the input vectors
  will produce NA values in the output.  If na.rm is
  TRUE, NA values are ignored.
  attributes (such as names or
  dim) are transferred from the first argument (if applicable).
  max and min are generic functions: methods can be defined
  for them individually or via the Summary group generic.