[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.
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 <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
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
More information about the R-help
mailing list