# which.min: Where is the Min() or Max() or first TRUE or FALSE ?

Description Usage Arguments Value Logical x – First TRUE or FALSE Author(s) See Also Examples

## Description

Determines the location, i.e., index of the (first) minimum or maximum of a numeric (or logical) vector.

## Usage

 ```1 2``` ```which.min(x) which.max(x) ```

## Arguments

 `x` numeric (logical, integer or double) vector or an R object for which the internal coercion to `double` works whose `min` or `max` is searched for.

## Value

Missing and `NaN` values are discarded.

an `integer` or on 64-bit platforms, if `length(x) =: n`>= 2^31 an integer valued `double` of length 1 or 0 (iff `x` has no non-`NA`s), giving the index of the first minimum or maximum respectively of `x`.

If this extremum is unique (or empty), the results are the same as (but more efficient than) `which(x == min(x, na.rm = TRUE))` or `which(x == max(x, na.rm = TRUE))` respectively.

## Logical `x` – First `TRUE` or `FALSE`

For a `logical` vector `x` with both `FALSE` and `TRUE` values, `which.min(x)` and `which.max(x)` return the index of the first `FALSE` or `TRUE`, respectively, as `FALSE < TRUE`. However, `match(FALSE, x)` or `match(TRUE, x)` are typically preferred, as they do indicate mismatches.

## Author(s)

Martin Maechler

`which`, `max.col`, `max`, etc.
Use `arrayInd()`, if you need array/matrix indices instead of 1D vector ones.
`which.is.max` in package nnet differs in breaking ties at random (and having a ‘fuzz’ in the definition of ties).
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17``` ```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) # 28 which.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) ```