maxCol package:base R Documentation _F_i_n_d _M_a_x_i_m_u_m _P_o_s_i_t_i_o_n _i_n _M_a_t_r_i_x _D_e_s_c_r_i_p_t_i_o_n: Find the maximum position for each row of a matrix, breaking ties at random. _U_s_a_g_e: max.col(m, ties.method=c("random", "first", "last")) _A_r_g_u_m_e_n_t_s: m: numerical matrix ties.method: a character string specifying how ties are handled, '"random"' by default; can be abbreviated; see 'Details'. _D_e_t_a_i_l_s: 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 1e-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. _V_a_l_u_e: index of a maximal value for each row, an integer vector of length 'nrow(m)'. _R_e_f_e_r_e_n_c_e_s: Venables, W. N. and Ripley, B. D. (2002) _Modern Applied Statistics with S._ New York: Springer (4th ed). _S_e_e _A_l_s_o: 'which.max' for vectors. _E_x_a_m_p_l_e_s: 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