[R] which.minimums not which.min

Marc Schwartz (via MN) mschwartz at mn.rr.com
Wed Mar 15 21:14:17 CET 2006


On Wed, 2006-03-15 at 11:32 -0800, Fred J. wrote:
>   Hi
>    
>   Is there a function which determines the location, i.e., index of
> the all minimums or maximums of a numeric vector.
>   Which.min(x) only finds the (first) of such.
>    
>   > x <- c(1:4,0:5, 4, 11)
>   > x
>    [1]  1  2  3  4  0  1  2  3  4  5 4 11
>   > which.min(x)
>   [1] 5
>   > which.max(x)
>   [1] 11
>   >
>    
>   but I need 
>   which.min(x)  to be 5 11
>   which.max(x) to be 4 10
>    
>   thanks
>    

There is something wrong with your example code versus data here, since:

> x
 [1]  1  2  3  4  0  1  2  3  4  5  4 11

> which.min(x)
[1] 5

> which.max(x)
[1] 12


There is one one minimum value of 0 in that vector and only one maximum
value of 11.

If you had a vector 'x':

> x <- c(1:4, 0:5, 4, 0, 5)

> x
 [1] 1 2 3 4 0 1 2 3 4 5 4 0 5


You could then do the following to get the indices of the multiple
min/max values:

> which(x == min(x))
[1]  5 12

> which(x == max(x))
[1] 10 13


The only other thing that I can think you might be considering would be
local minima/maxima in the vector and if that is what you want using:

  RSiteSearch("local minima")

or

  RSiteSearch("peaks")


should lead you to some solutions that have been discussed previously.

HTH,

Marc Schwartz




More information about the R-help mailing list