[R] calculating the mode in R...

Rainer M Krug r.m.krug at gmail.com
Wed Mar 30 11:20:07 CEST 2011


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 30/03/11 10:59, Tal Galili wrote:
> Hello Rainer and Fernando,
>  
> Actually, I think this function should involve the which.max (not max):

Right - was not awarw of which.max - I would have used which(max(...)) -
which.max is much more elegant.

Thanks,

Rainer

>  
> Here is a tiny function to perform this (with smarter handeling of
> multiple modes and giving proper warning in such cases)
> The.mode <- function(x, show_all_modes = F)

It is advisable to use FaALSE instead of F, especially in a function:
you can assign values to F and T, but you can not assign values to FALSE
and TRUE

Cheers,

Rainer

> {
>  x_freq <- table(x)
>  mode_location <- which.max(x_freq)
>  The_mode <- names(x_freq)[mode_location]
>  Number_of_modes <- length(mode_location)
>  #
>  if(show_all_modes) {
>   if(Number_of_modes >1) {
>    warning(paste("Multiple modes exist - returning
> all",Number_of_modes,"of them"))}
>   return(The_mode)
>  } else {
>   if(Number_of_modes >1) {
>    warning(paste("Multiple modes exist - returning only the first one
> out of", Number_of_modes))}   
>   return(The_mode[1])
>  }
> }
>  
>  
> Cheers,
> Tal
> 
> ----------------Contact
> Details:-------------------------------------------------------
> Contact me: Tal.Galili at gmail.com <mailto:Tal.Galili at gmail.com> | 
> 972-52-7275845
> Read me: www.talgalili.com <http://www.talgalili.com> (Hebrew) |
> www.biostatistics.co.il <http://www.biostatistics.co.il> (Hebrew) |
> www.r-statistics.com <http://www.r-statistics.com> (English)
> ----------------------------------------------------------------------------------------------
> 
> 
> 
> 
> On Wed, Mar 30, 2011 at 11:26 AM, Rainer M Krug <r.m.krug at gmail.com
> <mailto:r.m.krug at gmail.com>> wrote:
> 
> On 30/03/11 02:47, Fernando Marmolejo Ramos wrote:
>> Dear R users
> 
>> I?m aware that the package ?modest? is useful to find the mode in
> an array.
> 
>> However, I?d like to know if someone has translated the ?mode?
> function built-in
>> in MATLAB into R language. This function finds the most frequent
> value in an
>> array (http://www.mathworks.com/help/techdoc/ref/mode.html).
> 
> This sounds like a combination of the table() which tabulates your data,
> and the max() function to identify the max - but then you have to
> specify what to do when two values have the same count.
> 
> Rainer
> 
> 
>> Best
> 
>> Fer
> 
>> ______________________________________________
>> R-help at r-project.org <mailto:R-help at 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
> <http://www.r-project.org/posting-guide.html>
>> and provide commented, minimal, self-contained, reproducible code.
> 
> 

______________________________________________
R-help at r-project.org <mailto:R-help at 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
<http://www.r-project.org/posting-guide.html>
and provide commented, minimal, self-contained, reproducible code.




- -- 
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation
Biology, UCT), Dipl. Phys. (Germany)

Centre of Excellence for Invasion Biology
Natural Sciences Building
Office Suite 2039
Stellenbosch University
Main Campus, Merriman Avenue
Stellenbosch
South Africa

Tel:        +33 - (0)9 53 10 27 44
Cell:       +27 - (0)8 39 47 90 42
Fax (SA):   +27 - (0)8 65 16 27 82
Fax (D) :   +49 - (0)3 21 21 25 22 44
Fax (FR):   +33 - (0)9 58 10 27 44
email:      Rainer at krugs.de

Skype:      RMkrug
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk2S9ccACgkQoYgNqgF2egqLtQCeM5ntWTHOy2wyk4CbOxwnUfJG
VZUAnRcOpRImBm/AbhsK14O54+pzCP6H
=QW4d
-----END PGP SIGNATURE-----



More information about the R-help mailing list