# maxCol

##### Find Maximum Position in Matrix

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
numerical matrix

- ties.method
a character string specifying how ties are handled,

`"random"`

by default; can be abbreviated; see ‘Details’.

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

.
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, W. N. and Ripley, B. D. (2002)
*Modern Applied Statistics with S.*
New York: Springer (4th ed).

##### See Also

`which.max`

for vectors.

##### Examples

`library(base)`

```
# NOT RUN {
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
# }
# 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
# }
```

*Documentation reproduced from package base, version 3.6.2, License: Part of R 3.6.2*