% File src/library/base/man/range.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2023 R Core Team
% Distributed under GPL 2 or later

\name{range}
\title{Range of Values}
\alias{range}
\alias{range.default}
\alias{range.Date}
\alias{range.POSIXct}
\alias{.rangeNum}
\usage{
range(\dots, na.rm = FALSE)
\method{range}{default}(\dots, na.rm = FALSE, finite = FALSE)
## same for classes 'Date' and 'POSIXct'

.rangeNum(\dots, na.rm, finite, isNumeric)
}
\arguments{
  \item{\dots}{any \code{\link{numeric}} or character objects.}
  \item{na.rm}{logical, indicating if \code{\link{NA}}'s should be
    omitted.}
  \item{finite}{logical, indicating if all non-finite elements should
    be omitted.}
  \item{isNumeric}{a \code{\link{function}} returning \code{TRUE} or
    \code{FALSE} when called on \code{c(\dots, recursive = TRUE)},
    \code{\link{is.numeric}()} for the default \code{range()} method.}
}
\description{
  \code{range} returns a vector containing the minimum and maximum of
  all the given arguments.
}
\details{
  \code{range} is a generic function: methods can be defined for it
  directly or via the \code{\link[=S3groupGeneric]{Summary}} group generic.
  For this to work properly, the arguments \code{\dots} should be
  unnamed, and dispatch is on the first argument.

  If \code{na.rm} is \code{FALSE}, \code{NA}
  and \code{NaN} values in any of the arguments will cause \code{NA} values
  to be returned, otherwise \code{NA} values are ignored.

  If \code{finite} is \code{TRUE}, the minimum
  and maximum of all finite values is computed, i.e.,
  \code{finite = TRUE} \emph{includes} \code{na.rm = TRUE}.

  A special situation occurs when there is no (after omission
  of \code{NA}s) nonempty argument left, see \code{\link{min}}.% Extremes.Rd
}
\section{S4 methods}{
  This is part of the S4 \code{\link[=S4groupGeneric]{Summary}}
  group generic.  Methods for it must use the signature
  \code{x, \dots, na.rm}.
}
\references{
  \bibshow{R:Becker+Chambers+Wilks:1988}
}
\seealso{
  \code{\link{min}}, \code{\link{max}}.

  The \code{\link{extendrange}()} utility in package \pkg{grDevices}.
}
\examples{
(r.x <- range(stats::rnorm(100)))
diff(r.x) # the SAMPLE range

x <- c(NA, 1:3, -1:1/0); x
range(x)
range(x, na.rm = TRUE)
range(x, finite = TRUE)
}
\keyword{univar}
\keyword{arith}
