The issue here is rather that sort.list() does not implement complex vectors: order() uses sort.list() for speed if it has a single argument. How sort() and order() collate complex numbers seems to be undocumented in R. I was taught that they were unsorted, and there are several possible sort orders. It seems the collation is as a (real, imaginary) pair. This will be fixed for R 2.4.0: please consider a suitable donation to the R Foundation for the reduction in your annoyance.
On Wed, 28 Jun 2006, mh.smith at niwa.co.nz wrote:
Full_Name: Murray Smith Version: 2.2.1
How did you manage to miss all the injunctions not to report on obselete versions of R?
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
______________________________________________ R-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595