[Rd] order() (PR#9039)

mh.smith at niwa.co.nz mh.smith at niwa.co.nz
Wed Jun 28 01:19:58 CEST 2006


Full_Name: Murray Smith
Version: 2.2.1
OS: Windows XP
Submission from: (NULL) (202.36.29.1)


order() will not allow a complex vector for its first argument. This contrasts
with sort() which will happily sort a complex vector.

While this may not be regarded as a bug by some, it is annoying for anyone who
makes frequent use of complex numbers.

The problem occured in the Windows version 2.2.1 of R, but it has been present
in earlier versions.
> version
         _              
platform i386-pc-mingw32
arch     i386           
os       mingw32        
system   i386, mingw32  
status                  
major    2              
minor    2.1            
year     2005           
month    12             
day      20             
svn rev  36812          
language R       

An example demonstrating the problem:
x <- rep(2:1, c(2, 2)) + 1i*c(4, 1, 2, 3)
> x
[1] 2+4i 2+1i 1+2i 1+3i
> order(x)
Error in order(x) : unimplemented type 'complex' in 'orderVector1'

However sort() works with complex arguments
> sort(x)
[1] 1+2i 1+3i 2+1i 2+4i

The problem can be worked around either by 
> order(Re(x), Im(x))
[1] 3 4 2 1

or, because order() allows subsequent arguments to be complex, by using a
constant vector for the first argument 
> order(numeric(length(x)), x)
[1] 3 4 2 1



More information about the R-devel mailing list