# [R] find the permutation function of a sorting

Rui Barradas ru|pb@rr@d@@ @end|ng |rom @@po@pt
Wed May 23 08:18:50 CEST 2018

```Hello,

Like David said, what you are trying to do with sort() can be done with
order() in a much easier way.

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,

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 <dwinsemius using comcast.net>:
>
>>
>>
>>> On May 22, 2018, at 10:57 PM, John <miaojpm using 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 <dwinsemius using comcast.net>:
>>>
>>>
>>>> On May 22, 2018, at 10:06 PM, John <miaojpm using 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 using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help