[R] trouble with S4 methods for group "Summary"
Parlamis Franklin
fparlamis at mac.com
Thu Dec 29 06:52:00 CET 2005
Hello. This question concerns the Methods package. I have created a
new class and am trying to set a method for it for S4 group generic
"Summary". I have run into some signature problems. An example:
> setClass("track", representation(x="numeric", y="character"))
[1] "track"
> setGeneric("max", group="Summary")
[1] "max"
> setMethod("Summary", signature(x="track"), function(x, ..., na.rm)
callGeneric(x at x, ..., na.rm))
[1] "Summary"
> dd<-new("track", x=c(1,2), y="abc")
> max(dd)
[1] -Inf
Warning message:
no finite arguments to max; returning -Inf
> showMethods("max")
Function "max":
na.rm = "ANY"
na.rm = "track"
na.rm = "missing"
(inherited from na.rm = "ANY")
As you can see from the above, the method I tried to set for
"max" (via "Summary") was defined for the formal argument "na.rm" not
"x". This makes sense because the standardGeneric created for max
only allows methods to be defined for argument "na.rm"
> max
standardGeneric for "max" defined from package "base"
belonging to group(s): Summary
function (..., na.rm = FALSE)
standardGeneric("max")
<environment: 0x19447a28>
Methods may be defined for arguments: na.rm
However, group "Summary" purports to allow you to define methods for
arguments "x" and "na.rm".
> Summary
groupGenericFunction for "Summary" defined from package "base"
function (x, ..., na.rm = FALSE)
stop("function 'Summary' is a group generic; do not call it directly",
domain = NA)
<environment: 0x16aef098>
Methods may be defined for arguments: x, na.rm
How does this work? Can someone point me to where I am going wrong,
and explain how to define S4 methods for group "Summary" for argument
"x"? Perhaps I need to do more in my "setGeneric" call? Thanks in
advance.
More information about the R-help
mailing list