[R] How to obtain the original indices of elements after sorting

Jie jimmycloud at gmail.com
Mon Mar 11 02:24:28 CET 2013


Dear All,

Suppose I have a vector X = (x_1,  x_2, ....,  x_n), X_sort = sort(X)
= (x_(1), x_(2), ... , x(n) ),
and I would like to know the original position of these ordered x_(i)
in X, how can I do it?

case 1: all values are unique
x <- c( 3, 5, 4, 6)
x.sort <- sort(x) #
# I would like to obtain a vector (1, 3, 2, 4) which indicates that 3
in x is still the 1st element in x.sort, 5 is at the 3rd position in
x.sort. etc.

case 2: some x_i's have the same value
x <- c(3, 3, 5, 5, 4, 4, 6, 6)
I would like to obtain a vector as (1, 2, 5, 6, 3, 4, 7, 8)

I do not want to use which and loop over the vector to do it since for
a long vector it is not fast enough.
Thank you for your suggestion.

Best wishes,
Jie



More information about the R-help mailing list