| maxCol {base} | R Documentation |
Find Maximum Position in Matrix
Description
Find the maximum position for each row of a matrix, breaking ties at random.
Usage
max.col(m, ties.method = c("random", "first", "last"))
Arguments
m |
a numerical matrix. |
ties.method |
a character string specifying how ties are
handled, |
Details
When ties.method = "random", as per default, ties are broken at
random. In this case, the determination of a tie assumes that
the entries are probabilities: there is a relative tolerance of
10^{-5}, relative to the largest (in magnitude, omitting
infinity) entry in the row.
If ties.method = "first", max.col returns the
column number of the first of several maxima in every row, the
same as unname(apply(m, 1, which.max))
if m has no missing values.
Correspondingly, ties.method = "last" returns the last
of possibly several indices.
Value
index of a maximal value for each row, an integer vector of
length nrow(m).
References
Venables WN, Ripley BD (2002). Modern Applied Statistics with S, series Statistics and Computing. Springer, New York, NY. doi:10.1007/978-0-387-21706-2.
See Also
which.max for vectors.
Examples
table(mc <- max.col(swiss)) # mostly "1" and "5", 5 x "2" and once "4"
swiss[unique(print(mr <- max.col(t(swiss)))) , ] # 3 33 45 45 33 6
set.seed(1) # reproducible example:
(mm <- rbind(x = round(2*stats::runif(12)),
y = round(5*stats::runif(12)),
z = round(8*stats::runif(12))))
## Not run:
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
x 1 1 1 2 0 2 2 1 1 0 0 0
y 3 2 4 2 4 5 2 4 5 1 3 1
z 2 3 0 3 7 3 4 5 4 1 7 5
## End(Not run)
## column indices of all row maxima :
utils::str(lapply(1:3, function(i) which(mm[i,] == max(mm[i,]))))
max.col(mm) ; max.col(mm) # "random"
max.col(mm, "first") # -> 4 6 5
max.col(mm, "last") # -> 7 9 11