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

It does not achieve design consistency.  One would have to
specify NULL but that should not really be necessary.

On 12/31/05, Duncan Murdoch <murdoch at stats.uwo.ca> wrote:
> On 12/31/2005 12:21 PM, Gabor Grothendieck wrote:
> > 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.
>
> But a simpler change is to change the documentation, and it achieves all
> of those objectives.
>
> Duncan Murdoch
> >
> > 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