Re: [Rd] [R] Semantics of sequences in R

From: Berwin A Turlach <>
Date: Mon, 23 Feb 2009 17:56:23 +0800

On Mon, 23 Feb 2009 08:52:05 +0100
Wacek Kusnierczyk <> wrote:  

> Berwin A Turlach wrote:
> > G'day Stavros,
> <snip>
> >> In many cases, the orthogonal design is pretty straightforward.
> >> And in the cases where the operation is currently an error (e.g.
> >> sort(list(...))), I'd hope that wouldn't break existing code. [...]
> >>
> >
> > This could actually be an example that would break a lot of existing
> > code.
> >
> > sort is a generic function, and for sort(list(...)) to work, it
> > would have to dispatch to a function called sort.list; and as
> > Patrick Burns' "The R Inferno" points out, such a function exists
> > already and it is not for sorting list.
> >
> and you mean that sort.list not being applicable to lists is a) good
> design, and b) something that by noe means should be fixed, right?

I neither said nor meant this and I do not see how what I said could be interpreted in such a way. I was just commenting to Stavros that the example he picked, hoping that it would not break existing code, was actually a bad one which potentially will break a lot (?) of existing code.

Also, until reading Patrick Burns' "The R Inferno" I was not aware of sort.list. That function had not registered with me since I hardly used it. And I also have no need of calling sort() on lists. For em a lists is a flexible enough data structure such that defining a sort() command for them makes no sense; it could only work in very specific circumstances.

> > In fact, currently you get:
> >
> > R> cc <- list(a=runif(4), b=rnorm(6))
> > R> sort(cc)
> > Error in sort.list(cc) : 'x' must be atomic for 'sort.list'
> > Have you called 'sort' on a list?
> >
> one of the most funny error messages you get in r. note also that,
> following rolf turner's lists and vectors unproven theorem, a vector
> can be considered a list

I do not remember the exact context of Rolf's comments, but I believe he was talking in a more general sense and not in technical terms. I find it perfectly valid, even when talking about R, to say something like "vectors are stored as a list of numbers in consecutive memory locations in memory". Clearly, in a phrase like this, we are not talking about "vectors" and "list" as defined by the "R Language Definition" or "R Internals", or what functions like is.vector(), is.list() &c return for various R objects.

BTW, as I mentioned once before, you might want to consider to lose these chips on your shoulders.

> -- hence sort.list should raise the error on any vector input, no?

You will have to take that up with the designers of sort.list.

> > Thus, to make sort(list()) work, you would have to rename the
> > existing sort.list and then change every call to that function to
> > the new name. I guess this might break quite a few packages on CRAN.
> >
> scary! it's much preferred to confuse new users.

I usually learn a lot when I get confused about some issues/concept. Confusion forces one to sit down, think deeply and, thus, gain some understanding. So I am not so much concerned with new users being confused. It is, of course, a problem if the new user never comes out of his or her confusion.


        Berwin mailing list Received on Mon 23 Feb 2009 - 09:04:53 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Mon 23 Feb 2009 - 10:30:45 GMT.

Mailing list information is available at Please read the posting guide before posting to the list.

list of date sections of archive