[R] return first index for each unique value in a vector

R. Michael Weylandt michael.weylandt at gmail.com
Wed Aug 29 00:32:53 CEST 2012


On Tue, Aug 28, 2012 at 2:58 PM, Bronwyn Rayfield
<bronwynrayfield at gmail.com> wrote:
> I would like to efficiently find the first index of each unique value in a
> very large vector.
>
> For example, if I have a vector
>
> A<-c(9,2,9,5)
>
> I would like to return not only the unique values (2,5,9) but also their
> first indices (2,4,1).
>
> I tried using a for loop with which(A==unique(A)[i])[1] to find the first
> index of each unique value but it is very slow.

You'll get marginally more speed from which.max() but I'm sure there's
a better way. I'll write if I can think of it.

Michael

>
> What I am trying to do is easily and quickly done with the "unique"
> function in MATLAB (see
> http://www.mathworks.com/help/techdoc/ref/unique.html).
>
> Thank you for your help,
> Bronwyn
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> 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
> and provide commented, minimal, self-contained, reproducible code.




More information about the R-help mailing list