which.min {base} | R Documentation |

## Where is the Min() or Max() or first TRUE or FALSE ?

### Description

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

### Usage

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

### Arguments

`x` |
numeric (logical, integer or double) vector or an |

### Value

Missing and `NaN`

values are discarded.

an `integer`

or on 64-bit platforms, if
`length(x) =: n`

`\ge 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

### See Also

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).

### 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) # 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)
```

*base*version 4.4.0 Index]