I thought I've understood the 'order' function, using simple examples like: order(c(5,4,-2)) [1] 3 2 1 However, I arrived to the following example: order(c(2465, 2255, 2085, 1545, 1335, 1210, 920, 210, 210, 505, 1045)) [1] 8 9 10 7 11 6 5 4 3 2 1 and I was completely perplexed! Shouldn't the output vector be 11 10 9 8 7 6 4 1 2 3 5 ? Do I have a damaged version of R? I became still more astonished when I used the sort function and got the right answer: sort(c(2465, 2255, 2085, 1545, 1335, 1210, 920, 210, 210, 505, 1045)) [1] 210 210 505 920 1045 1210 1335 1545 2085 2255 2465 since 'sort' documentation claims to be using 'order' to establish the right order. Please help me to understand all this! Thanks, -Sergio.
Hi Julio, On Tue, Apr 16, 2013 at 1:51 PM, Julio Sergio <juliosergio at gmail.com> wrote:> I thought I've understood the 'order' function, using simple examples like: > > order(c(5,4,-2)) > [1] 3 2 1 > > However, I arrived to the following example: > > order(c(2465, 2255, 2085, 1545, 1335, 1210, 920, 210, 210, 505, 1045)) > [1] 8 9 10 7 11 6 5 4 3 2 1 > > and I was completely perplexed! > Shouldn't the output vector be 11 10 9 8 7 6 4 1 2 3 5 ? > Do I have a damaged version of R?Your version of R is fine; your understanding is damaged. :) order() returns the element indices for each position. So in your example, the sorted version of the vector would have element 8 in the first place, element 9 in the second place, and element 1 in the last place. order() is not the same as rank(). See: x <- c(2465, 2255, 2085, 1545, 1335, 1210, 920, 210, 210, 505, 1045) order(x) x[order(x)] rank(x) # what you seem to expect Sarah -- Sarah Goslee http://www.functionaldiversity.org
Hello, Inline. Em 16-04-2013 18:51, Julio Sergio escreveu:> I thought I've understood the 'order' function, using simple examples like: > > order(c(5,4,-2)) > [1] 3 2 1 > > However, I arrived to the following example: > > order(c(2465, 2255, 2085, 1545, 1335, 1210, 920, 210, 210, 505, 1045)) > [1] 8 9 10 7 11 6 5 4 3 2 1 > > and I was completely perplexed! > Shouldn't the output vector be 11 10 9 8 7 6 4 1 2 3 5 ?No, why should it? Try assigning the output of order and see what happens to the vector. x <- c(2465, 2255, 2085, 1545, 1335, 1210, 920, 210, 210, 505, 1045) (o <- order(x) ) x[o] # Allright Hope this helps, Rui Barradas> Do I have a damaged version of R? > > I became still more astonished when I used the sort function and got the > right answer: > > sort(c(2465, 2255, 2085, 1545, 1335, 1210, 920, 210, 210, 505, 1045)) > [1] 210 210 505 920 1045 1210 1335 1545 2085 2255 2465 > since 'sort' documentation claims to be using 'order' to establish the right > order. > > Please help me to understand all this! > > Thanks, > > -Sergio. > > ______________________________________________ > 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. >
On 16/04/2013 1:51 PM, Julio Sergio wrote:> I thought I've understood the 'order' function, using simple examples like: > > order(c(5,4,-2)) > [1] 3 2 1 > > However, I arrived to the following example: > > order(c(2465, 2255, 2085, 1545, 1335, 1210, 920, 210, 210, 505, 1045)) > [1] 8 9 10 7 11 6 5 4 3 2 1 > > and I was completely perplexed! > Shouldn't the output vector be 11 10 9 8 7 6 4 1 2 3 5 ? > Do I have a damaged version of R?You are probably confusing order() and rank(). What we want is that x[order(x)] is in increasing order. This is the inverse permutation of what rank(x) gives, so (if there are no ties) rank(x)[order(x)] and order(x)[rank(x)] should both give 1:length(x). Duncan> > I became still more astonished when I used the sort function and got the > right answer: > > sort(c(2465, 2255, 2085, 1545, 1335, 1210, 920, 210, 210, 505, 1045)) > [1] 210 210 505 920 1045 1210 1335 1545 2085 2255 2465 > since 'sort' documentation claims to be using 'order' to establish the right > order. > > Please help me to understand all this! > > Thanks, > > -Sergio. > > ______________________________________________ > 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.
Hi, vec1<- c(2465, 2255, 2085, 1545, 1335, 1210, 920, 210, 210, 505, 1045) vec1[order(vec1)] ?#[1]? 210? 210? 505? 920 1045 1210 1335 1545 2085 2255 2465 order(vec1) ?#[1]? 8? 9 10? 7 11? 6? 5? 4? 3? 2? 1 sort(vec1,index.return=TRUE) #$x ?#[1]? 210? 210? 505? 920 1045 1210 1335 1545 2085 2255 2465 #$ix # [1]? 8? 9 10? 7 11? 6? 5? 4? 3? 2? 1 A.K. ----- Original Message ----- From: Julio Sergio <juliosergio at gmail.com> To: r-help at stat.math.ethz.ch Cc: Sent: Tuesday, April 16, 2013 1:51 PM Subject: [R] I don't understand the 'order' function I thought I've understood the 'order' function, using simple examples like: ? order(c(5,4,-2)) ? [1] 3 2 1 However, I arrived to the following example: ? order(c(2465, 2255, 2085, 1545, 1335, 1210, 920, 210, 210, 505, 1045)) ? [1]? 8? 9 10? 7 11? 6? 5? 4? 3? 2? 1 and I was completely perplexed! Shouldn't the output vector be? 11 10 9 8 7 6 4 1 2 3 5 ? Do I have a damaged version of R? I became still more astonished when I used the sort function and got the right answer: ? sort(c(2465, 2255, 2085, 1545, 1335, 1210,? 920,? 210,? 210,? 505, 1045)) ? [1]? 210? 210? 505? 920 1045 1210 1335 1545 2085 2255 2465 since 'sort' documentation claims to be using 'order' to establish the right order. Please help me to understand all this! ? Thanks, ? -Sergio. ______________________________________________ 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.
Julio Sergio <juliosergio <at> gmail.com> writes:> > I thought I've understood the 'order' function, using simple examples like:Thanks to you all!... As Sarah said, what was damaged was my understanding ( ;-) )... and as Duncan said, I was confusing 'order' with 'rank', thanks! Now I understand the 'order' function. -Sergio
[See in-line below[ On 16-Apr-2013 17:51:41 Julio Sergio wrote:> I thought I've understood the 'order' function, using simple examples like: > > order(c(5,4,-2)) > [1] 3 2 1 > > However, I arrived to the following example: > > order(c(2465, 2255, 2085, 1545, 1335, 1210, 920, 210, 210, 505, 1045)) > [1] 8 9 10 7 11 6 5 4 3 2 1 > > and I was completely perplexed! > Shouldn't the output vector be 11 10 9 8 7 6 4 1 2 3 5 ? > Do I have a damaged version of R?I think the simplest explanation can be given as: S <- c(2465, 2255, 2085, 1545, 1335, 1210, 920, 210, 210, 505, 1045) cbind(Index=1:length(S), S, Order=order(S), Sort=sort(S)) Index S Order Sort [1,] 1 2465 8 210 [2,] 2 2255 9 210 [3,] 3 2085 10 505 [4,] 4 1545 7 920 [5,] 5 1335 11 1045 [6,] 6 1210 6 1210 [7,] 7 920 5 1335 [8,] 8 210 4 1545 [9,] 9 210 3 2085 [10,] 10 505 2 2255 [11,] 11 1045 1 2465 showing that the value of 'order' for any one of the numbers is the Index (position) of that number in the original series, placed in the position that number occupies in the sorted series. (With a tie for S[8] = S[9] = 210). For example: which one of S occurs in 5th position in the sorted series? It is the 11th of S (1045).> I became still more astonished when I used the sort function and got the > right answer: > > sort(c(2465, 2255, 2085, 1545, 1335, 1210, 920, 210, 210, 505, 1045)) > [1] 210 210 505 920 1045 1210 1335 1545 2085 2255 2465 > since 'sort' documentation claims to be using 'order' to establish the right > order.Indeed, once you have order(S), you know which element of S to put in each position of the sorted order: S[order(S)] [1] 210 210 505 920 1045 1210 1335 1545 2085 2255 2465 Does this help to explain it? Ted.> Please help me to understand all this! > > Thanks, > > -Sergio. > > ______________________________________________ > 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.------------------------------------------------- E-Mail: (Ted Harding) <Ted.Harding at wlandres.net> Date: 16-Apr-2013 Time: 19:12:21 This message was sent by XFMail