Determines the location, i.e., index of the (first) minimum or maximum of a numeric (or logical) vector.
numeric (logical, integer or double) vector or an R object
for which the internal coercion to
NaN values are discarded.
integer or on 64-bit platforms, if
length(x) =: n>= 2^31 an integer
double of length 1 or 0 (iff
x has no
NAs), giving the index of the first minimum or
maximum respectively of
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.
x with both
the index of the first
TRUE, respectively, as
FALSE < TRUE.
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
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)