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 R object
for which the internal coercion to |
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)