There seems to be a lot of confusion with the rank and order functions; They are not the same but inverse of each other.
For a vector x, order(x) is a permutation such that x[order(x)] is ordered, whereas rank(x) simply shows the ranks of the entries of x.
As a result, it is always true that
rank(x)[ order(x) ] = order(x)[ rank(x) ] = 1:length(x)
For example, if
x = c(8,9,7) d = order(x) # 3 1 2 r = rank(x) # 2 3 1 # r[ d [ k ]] = d[ r[k ]] = k for k = 1,2,3.