From ggrothendieck at gmail.com  Sat Dec 31 18:21:17 2005
From: ggrothendieck at gmail.com (Gabor Grothendieck)
Date: Sat, 31 Dec 2005 12:21:17 -0500
Subject: [Rd] xy.coords
In-Reply-To: <43B6B983.1060408@stats.uwo.ca>
References: <971536df0512301910k1e98e8e9pd4aa00149fedf1af@mail.gmail.com>
	<43B68554.9030505@stats.uwo.ca>
	<971536df0512310557l1e3ea702ic9f4444b7583f4a7@mail.gmail.com>
	<43B6B983.1060408@stats.uwo.ca>
Message-ID: <971536df0512310921g43f340e6ufec047b7c07f53da@mail.gmail.com>

I think the point is that (1) it does not work as documented and (2) in
most functions one can omit unnecessary args without having
to specify NULL so its behvaior seems inconsistent from a design
viewpoint.  By allowing either missing or NULL it will work as documented,
and probably intended, yet continue to be backward compatible with
existing usages.

On 12/31/05, Duncan Murdoch <murdoch at stats.uwo.ca> wrote:
> On 12/31/2005 8:57 AM, Gabor Grothendieck wrote:
> > It could be changed to missing(y) || is.null(y) and the docs amended.
> > That way existing code will continue to work and code that otherwise
> > gives an error currently, but should have worked, will now work too.
>
> Can you give an example where you would want to use xy.coords(y ~ x)?
> Normally xy.coords() is used in other functions, and they can default y
> to NULL (see plot.default, for example).
>
> Duncan Murdoch
> >
> > On 12/31/05, Duncan Murdoch <murdoch at stats.uwo.ca> wrote:
> >
> >>On 12/30/2005 10:10 PM, Gabor Grothendieck wrote:
> >>
> >>>In ?xy.coords it says:
> >>>
> >>>     If 'y' is missing and 'x' is a
> >>>
> >>>     formula: of the form 'yvar ~ xvar'. 'xvar' and 'yvar' are used as
> >>>          x and y variables.
> >>>
> >>>     list: containing components 'x' and 'y', these are used to define
> >>>          plotting coordinates.
> >>>
> >>>     time series: the x values are taken to be 'time(x)' and the y
> >>>          values to be the time series.
> >>>
> >>>     matrix with two columns: the first is assumed to contain the x
> >>>          values and the second the y values.
> >>>
> >>>however, in fact, if y is missing an error is given. e.g.
> >>>
> >>>x <- 1:3
> >>>y <- 4:6
> >>>xy.coords(y ~ x) # error
> >>>xy.coords(cbind(x, y)) # error
> >>>xy.coords(ts(y)) # error
> >>>
> >>>Looking at the code, is.null(y) in the first line of the
> >>>body should be missing(y) .
> >>
> >>It would be better to change the docs to say "if 'y' is NULL ...".  The
> >>code has been the way it is for years and years, and is widely used.
> >>
> >>Changing the test to missing(y) would mean all existing uses that put a
> >>NULL there would need to be changed.
> >>
> >>Adding a default value of NULL to y would have less impact, but I'd
> >>still be worried about it having long-range bad effects.
> >>
> >>Duncan Murdoch
> >>
>
>



[Rd] xy.coords
Gabor Grothendieck