Rev 70465 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
% File src/library/base/man/which.min.Rd% Part of the R package, https://www.R-project.org% Copyright 1995-2016 R Core Team% Distributed under GPL 2 or later\name{which.min}\alias{which.min}\alias{which.max}\title{Where is the Min() or Max() or first TRUE or FALSE ?}\concept{argmin}\concept{argmax}\concept{index of minimum}\concept{index of maximum}\concept{index of first TRUE}\concept{index of first FALSE}\description{Determines the location, i.e., index of the (first) minimum or maximumof a numeric (or logical) vector.}\usage{which.min(x)which.max(x)}\arguments{\item{x}{numeric (logical, integer or double) vector or an \R objectfor which the internal coercion to \code{\link{double}} works whose\code{\link{min}} or \code{\link{max}} is searched for.}}\section{Logical \code{x} -- First \code{TRUE} or \code{FALSE}}{For a \code{\link{logical}} vector \code{x} with both \code{FALSE} and\code{TRUE} values, \code{which.min(x)} and \code{which.max(x)} returnthe index of the first \code{FALSE} or \code{TRUE}, respectively, as\code{FALSE < TRUE}. However, \code{match(FALSE, x)} or\code{match(TRUE, x)} are typically \emph{preferred}, as they doindicate mismatches.}\value{Missing and \code{NaN} values are discarded.an \code{\link{integer}} or on 64-bit platforms, if\code{\link{length}(x) =: n}\eqn{\ge 2^{31}}{>= 2^31} an integervalued \code{\link{double}} of length 1 or 0 (iff \code{x} has nonon-\code{NA}s), giving the index of the \emph{first} minimum ormaximum respectively of \code{x}.If this extremum is unique (or empty), the results are the same as(but more efficient than) \code{which(x == min(x, na.rm = TRUE))} or\code{which(x == max(x, na.rm = TRUE))} respectively.}\author{Martin Maechler}\seealso{\code{\link{which}}, \code{\link{max.col}}, \code{\link{max}}, etc.Use \code{\link{arrayInd}()}, if you need array/matrix indices insteadof 1D vector ones.\code{\link[nnet]{which.is.max}} in package \CRANpkg{nnet} differs inbreaking ties at random (and having a \sQuote{fuzz} in the definitionof ties).}\examples{x <- c(1:4, 0:5, 11)which.min(x)which.max(x)## it *does* work with NA's present, by discarding them:presidents[1:30]range(presidents, na.rm = TRUE)which.min(presidents) # 28which.max(presidents) # 2## Find the first occurrence, i.e. the first TRUE, if there is at least one:x <- rpois(10000, lambda = 10); x[sample.int(50, 20)] <- NA## where is the first value >= 20 ?which.max(x >= 20)## Also works for lists (which can be coerced to numeric vectors):which.min(list(A = 7, pi = pi)) ## -> c(pi = 2L)\dontshow{stopifnot(identical(which.min(list(A = 7, pi = pi)), c(pi = 2L)))}}\keyword{utilities}