He wants to specify arguments to AIC that act like the "k" argument
and is thinking of faking it by, essentially, doing another round of
argument matching on ...

I think that if you define an S4 generic that only dispatches on the
first argument you may be able to do it for a specific method. On the
bright side, the new documentation for AIC would take precedence over
the stats documentation so the users couldn't actually complain about
the method not matching the documentation.

For flowCore we wanted to use filter, which unfortunately assumes that
the only thing I would ever want to filter is a time series and isn't
even an S3 generic, and had to do something similar by specifying
"useAsDefault=FALSE" in the generic. It seems to have broken
dispatching to the original filter function though, which is something
we'll have to fix.


On 12/16/06, Seth Falcon <[EMAIL PROTECTED]> wrote:
> Ben Bolker <[EMAIL PROTECTED]> writes:
>
> >   I'm trying to add arguments to the AIC method
> > for some classes -- things like
> >   weights=TRUE to calculate AIC weights
> >   corr=TRUE, nobs to calculate AICc
> >   delta=TRUE  to put a delta-AIC column in the output.
> >
> >  The problem is that AIC is defined as
> > AIC(object, ..., k=2)  where k is the constant associated
> > with the penalty term and ... is a list of objects
> > that will have their AICs calculated and listed.
> > Thus I'm not allowed (I think) to extend the definition to
> >
> > AIC(object, ..., nobs, corr=FALSE, delta=FALSE, weights=FALSE, k=2)
>
> I think you can add args before the '...'.  However, you will need to
> provide values for them in all calls or else they will steal a fit
> from the '...' args.
>
> I don't understand really what you are trying to achieve, so this may
> not be helpful.  Nevertheless, here is a dummy example that you may
> find useful.
>
>
> setClass("Foo",
>          representation=representation(
>            fit="lm"))
>
> setMethod("AIC", "Foo",
>           function(object, weights=TRUE, delta=TRUE, ..., k=2) {
>               ans <- AIC([EMAIL PROTECTED], k=k, ...)
>               args1 <- list(weights=weights, delta=delta, k=k)
>               cat("args\n")
>               print(args1)
>               cat("answer:\n")
>               print(ans)
>           })
>
> example("AIC")
> foo <- new("Foo", fit=lm1)
> AIC(foo)
> ## AIC(foo, lm1)   # this doesn't work, lm1 gets picked up as the weights arg
> AIC(foo, weights=FALSE, delta=TRUE, lm1, lm1, lm1)
>
>
>
> + seth
>
> ______________________________________________
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>


-- 
Byron Ellis ([EMAIL PROTECTED])
"Oook" -- The Librarian

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to