On Aug 31, 2010, at 5:19 PM, Iain Martyn wrote:


Hi, I have what I think is a simple question/issue but I have unable to find the answer for it either in the R-manual or by browsing the web.



I would like to know if there is a "mode" function in R, such that from a vector or matrix the function returns the most common value. In other programs I use (such as Matlab) I can have for exampe a 3X3 matrix A, A=[1 2 3; 1 3 2; 3 3 2] and I can find the mode of the rows so that mode(A[1:3,:]) returns a 1X3 matrix [1 3 2].

Matlab must use row major order? Otherwise you statement doesn't make sense. (You are going to need to adjust to R's default column major order, if that's the case.)




Is this possible in R as well?  If not, how would one go about this?

Have you considered using names(), which.max() and table()?

A=matrix(c(1, 2, 3, 1, 3, 2, 3, 3, 2), 3 ,3, byrow=TRUE)

 apply(A, 2, function(x) names(which.max(table(x)) ))
# [1] "1" "3" "2"

You cannot use just which.max(table(.)) since that would return the counts. If you want the number, then you need to wrap as.numeric around the whole mess.

--

David Winsemius, MD
West Hartford, CT

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to