which
, which.max
, which.min
Basics
which
is a function that takes a statement whose value evaluates to TRUE
or FALSE
, then returns the indices of the values that return TRUE
. which.max
and which.min
are useful support functions that find the index of a vector’s maximum/minimum value.
Examples
Given a numeric vector, return the index of the maximum value.
Click to see solution
x <- c(1,-10, 2,4,-3,9,2,-2,4,8)
which.max(x)
# the above is a shortcut for which(x==max(x))
[1] 6
Given a vector, return the index of the positive values.
Click to see solution
x <- c(1,-10, 2,4,-3,9,2,-2,4,8)
which(x > 0)
[1] 1 3 4 6 7 9 10
Given a matrix, return the indexes (row and column) of the positive values.
Click to see solution
mat <- matrix(c(1, -10, 2, 4, -3, 9, 2, -2, 4, 8), ncol=2)
which(mat > 0, arr.ind = TRUE)
row col [1,] 1 1 [2,] 3 1 [3,] 4 1 [4,] 1 2 [5,] 2 2 [6,] 4 2 [7,] 5 2
If arr.ind = FALSE
here, we would get one index per number found, which isn’t useful when we have two dimensions to search.