[Rd] [R] Semantics of sequences in R
Berwin A Turlach
berwin at maths.uwa.edu.au
Mon Feb 23 10:56:23 CET 2009
On Mon, 23 Feb 2009 08:52:05 +0100
Wacek Kusnierczyk <Waclaw.Marcin.Kusnierczyk at idi.ntnu.no> wrote:
> Berwin A Turlach wrote:
> > G'day Stavros,
> >> 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
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
> > 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.
More information about the R-devel