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

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
Duncan Murdoch