From iago.mosqueira at gmail.com  Tue May 27 00:15:52 2008
From: iago.mosqueira at gmail.com (Iago Mosqueira)
Date: Tue, 27 May 2008 00:15:52 +0200
Subject: [Rd] S4 generic for lowess
In-Reply-To: <59d7961d0805201006m4c6b1dd0i9422ec31f8810c01@mail.gmail.com>
References: <48328EB8.7050001@gmail.com>
	<59d7961d0805201006m4c6b1dd0i9422ec31f8810c01@mail.gmail.com>
Message-ID: <483B3698.30808@gmail.com>

Hi,

Henrik Bengtsson wrote:
> A quick comment on design:
> 
> On Tue, May 20, 2008 at 1:41 AM, Iago Mosqueira
> <iago.mosqueira at gmail.com> wrote:
>> Hi,
>>
>> A lowess method is defined in our package for one of our S4 classes. To
>> explicitely define the generic this is being used
>>
>> if (!isGeneric("lowess"))
>>  setGeneric("lowess", useAsDefault = lowess)
>>
>> This works fine for many other methods inherited from various R
>> packages. In this case a warning is issued in R CMD check:
>>
>> * checking R code for possible problems ... NOTE
>> lowess: no visible binding for global variable 'xy'
>> lowess: no visible binding for global variable 'o'
>>
>> which I assume originates from the formals of lowess
>>
>> lowess(x, y = NULL, f = 2/3, iter = 3, delta = 0.01 * diff(range(xy$x[o])))
>>
>> where 'xy' and 'o' are present in the argument list but are really
>> defined inside the function itself.
> 
> To my opinion, this could have been implemented as (or with some other
> default value on 'delta'):
> 
> lowess <- function(x, y=NULL, f=2/3, iter=3, delta=NULL) {
>   [...]
>   if (is.null(delta))
>     delta <- 0.01 * diff(range(xy$x[o])));
>   [...]
> }
> 
> and then document in the help pages what 'delta' defaults to.
> 
> My $.02
> 
> /Henrik

That would be extremely useful for our code. I have some other examples
of functions or S3 methods that could benefit from changes in default
arguments to make them more S4 friendly. range, for example, cannot be
overload as its generic needs to be based on

function (..., na.rm = FALSE)  .Primitive("range"

Is there interest in the R Core Team in identifying these?

Regards,


Iago



>> I suppose I can safely ignore this warning, and the new methods seems to
>> work fine, but I was curious to know if there is a better way to deal
>> with this.
>>
>> Many thanks,
>>
>>
>> Iago
>>
>> --
>> Iago Mosqueira
>> Cefas
>> Systems Modelling
>>
>> Pakefield Rd.
>> Lowestoft NR33 0HT
>> U.K.
>> +44 (0)1502 558003
>>
>> ______________________________________________
>> R-devel at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel



[Rd] S4 generic for lowess
Iago Mosqueira