jeffshantz - 28 days ago 5x

R Question

I'm trying to understand how the

`order()`

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)`

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

Answer

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 orderIf you did

`oo<-order(a)`

`plot(a[oo],rank(a[oo])/length(a),type="S")`

or simply

`oo<-order(a)`

`plot(a[oo],(1:length(a))/length(a)),type="S")`

you get a line graph of the CDF.

I'll bet you're thinking of rank.

Source (Stackoverflow)

Comments