# [R] Sorting problem

Wacek Kusnierczyk Waclaw.Marcin.Kusnierczyk at idi.ntnu.no
Sun Mar 29 01:18:20 CET 2009

```Stavros Macrakis wrote:
> On Sat, Mar 28, 2009 at 7:53 AM, Duncan Murdoch <murdoch at stats.uwo.ca> wrote:
>
>> ...More generally, the xtfrm() function converts a vector into a numeric one that sorts in the same order. ...
>>
>
> Thanks, I learn a lot just by reading the answers to other people's
> questions on this list.
>
> Some followup questions:
>
> 1) Where does the name 'xtfrm' come from?
> 2) Why isn't xtfrm of a numeric vector the identity function?
> 3) Similarly, why isn't xtfrm of a logical vector just as.integer of
> it? (as it is for factors)
> 4) Why is xtfrm(c(2,3,2)) => c(1,3,1) and not c(1,2,1) or for that
> matter c(2,3,2) (see point 2)?
>

and one more;  ?xtfrm says:

"     The default method will make use of '==', '>'  and 'is.na' methods
for the class of 'x', but might be rather slow when doing so.
"

and yet:

x = c(1i, 0i)
is(x)
# [1] "complex" "vector"

xtfrm(x)
# [1] 2 1

there is no xtfrm.complex, so the default should be called and it would
make use of '==', '>', and 'is.na' for the class 'complex'.  but this fails:

0i > 1i
# error: invalid comparison with complex values

how come?  (yes, it's again the flaw of complex being totally ordered
while '>' and relatives cannot be used to establish the order).

vQ

```