From sfalcon at fhcrc.org  Sun Dec 17 01:06:57 2006
From: sfalcon at fhcrc.org (Seth Falcon)
Date: Sat, 16 Dec 2006 16:06:57 -0800
Subject: [Rd] question about trailing arguments in an S4 method
In-Reply-To: <458446F1.40403@zoo.ufl.edu> (Ben Bolker's message of "Sat,
	16 Dec 2006 14:20:17 -0500")
References: <458446F1.40403@zoo.ufl.edu>
Message-ID: <m2mz5n5qse.fsf@ziti.local>

Ben Bolker <bolker at zoo.ufl.edu> 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(object=object at fit, 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



[Rd] question about trailing arguments in an S4 method
Seth Falcon