[R] Retrieve indexes of the "first occurrence of numbers" in an effective manner

Michael Weylandt michael.weylandt at gmail.com
Thu Dec 27 20:35:12 CET 2012


?duplicated will help. 

M

On Dec 27, 2012, at 8:17 PM, Emmanuel Levy <emmanuel.levy at gmail.com> wrote:

> Hi,
> 
> That sounds simple but I cannot think of a really fast way of getting
> the following:
> 
> c(1,1,2,2,3,3,4,4) would give c(1,3,5,7)
> 
> i.e., a function that returns the indexes of the first occurrences of numbers.
> 
> Note that numbers may have any order e.g., c(3,4,1,2,1,1,2,3,5), can
> be very large, and the vectors are also very large (which prohibits
> any loop).
> 
> The best I could think of is:
> 
> tmp = c(1,1,2,2,3,3,4,4)
> u = unique(tmp)
> sapply(u, function(x){ which(!is.na(match(tmp,x)))[1]} )
> 
> But there might be a useful function I don't know ..
> 
> Thanks for any hint.
> All the best,
> 
> Emmanuel
> 
> ______________________________________________
> 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