Thanks, David, Rui and Jeff!!! The function order works much better. I should have used an example where the permutation and its inverse are not identical:
> i <- order(c("B", "C", "A")) > i [1] 3 1 2 > c("D","E", "F")[i] [1] "F" "D" "E" > c("D","E", "F")[order(i)] [1] "E" "F" "D" 2018-05-23 14:18 GMT+08:00 Rui Barradas <ruipbarra...@sapo.pt>: > Hello, > > Like David said, what you are trying to do with sort() can be done with > order() in a much easier way. > > First, your code > > x <- sort(c("bc","ac","dd"), index.return=TRUE) > > > Now, with function order() > > > i <- order(c("bc", "ac", "dd")) > > y <- c("D","E", "F")[i] > y > #[1] "E" "D" "F" > > # This will give you the inverse, > # just apply order() to the output of order(), > # function order() is its own inverse > > y[ order(i) ] > #[1] "D" "E" "F" > > > Finally, compare the results and see that they are exactly the same. > > identical(x$ix, i) > #[1] TRUE > > > Hope this helps, > > Rui Barradas > > On 5/23/2018 4:37 AM, John wrote: > >> sort(c("bc","ac","dd"), index.return=TRUE) >>> >> $x >> [1] "ac" "bc" "dd" >> >> $ix >> [1] 2 1 3 >> >> >> We have the permutation, namely 1-->2, 2-->1, 3-->3. >> How can I apply the permutation function to a new set >> c("D","E", "F")? >> so that the result is >> c("E","D", "F"). >> >> >> >> >> 2018-05-23 11:06 GMT+08:00 David Winsemius <dwinsem...@comcast.net>: >> >> >>> >>> On May 22, 2018, at 10:57 PM, John <miao...@gmail.com> wrote: >>>> >>>> Thanks, David. >>>> I got the answer from the web. >>>> Is there any easy way to permute a set (e.g., a set of characters) by >>>> >>> the permutation it returns? Thanks, >>> >>>> >>>> >>>> x <- c(10,7,4,3,8,2) >>>>> sort(x, index.return=TRUE) >>>>> >>>> $x >>>> [1] 2 3 4 7 8 10 >>>> >>>> $ix >>>> [1] 6 4 3 2 5 1 >>>> >>>> >>> I don't understand what is being requested. The $ix value is the same as >>> the one returned `by order`. >>> >>> David. >>> >>> >>> 2018-05-23 10:49 GMT+08:00 David Winsemius <dwinsem...@comcast.net>: >>>> >>>> >>>> On May 22, 2018, at 10:06 PM, John <miao...@gmail.com> wrote: >>>>> >>>>> Hi, >>>>> >>>>> Is there any way to find the permutation function of the sorting and >>>>> >>>> to >>> >>>> apply the function (or its inverse) elsewhere? >>>>> >>>>> For example, the following permutation function from the sorting in >>>>> >>>> the >>> >>>> matrix form is >>>>> c(1,2,3), c(2,1,3) >>>>> >>>>> sort(c("bc","ac","dd")) >>>>>> >>>>> [1] "ac" "bc" "dd" >>>>> >>>>> >>>> I think you are asking for the `order` function. >>>> >>>> I try to find it in the permutations/permute package, but I can't >>>>> >>>> find it >>> >>>> >>>>> John >>>>> >>>>> [[alternative HTML version deleted]] >>>>> >>>> >>>> >>>> >>> >>> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide http://www.R-project.org/posti >> ng-guide.html >> and provide commented, minimal, self-contained, reproducible code. >> >> [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.