jeffshantz jeffshantz - 1 year ago 89
R Question

Understanding the order() function

I'm trying to understand how the

function works. I was under the impression that it returned a permutation of indices, which when sorted, would sort the original vector.

For instance,

> a <- c(45,50,10,96)
> order(a)
[1] 3 1 2 4

I would have expected this to return
c(2, 3, 1, 4)
, since the list sorted would be 10 45 50 96.

Can someone help me understand the return value of this function?

Answer Source

This seems to explain it.

The definition of order is that a[order(a)] is in increasing order. This works with your example, where the correct order is the fourth, second, first, then third element.

You may have been looking for rank, which returns the rank of the elements
R> a <- c(4.1, 3.2, 6.1, 3.1)
R> order(a)
[1] 4 2 1 3
R> rank(a)
[1] 3 2 4 1
so rank tells you what order the numbers are in, order tells you how to get them in ascending order.

plot(a, rank(a)/length(a)) will give a graph of the CDF. To see why order is useful, though, try plot(a, rank(a)/length(a),type="S") which gives a mess, because the data are not in increasing order

If you did
or simply
you get a line graph of the CDF.

I'll bet you're thinking of rank.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download