HI,
Replacing seq_along() with which() slightly improved CPU time. ?
system.time({
?set.seed(1)
?A<-sample(1:5,1e6,replace=TRUE)
?which(!duplicated(A))
?A[which(!duplicated(A))]
?})
#?? user? system elapsed
? #0.040?? 0.012?? 0.052?
A.K.
----- Original Message -----
From: Bronwyn Rayfield <bronwynrayfield at gmail.com>
To: r-help at r-project.org
Cc:
Sent: Tuesday, August 28, 2012 3:58 PM
Subject: [R] return first index for each unique value in a vector
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.
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.