[Rd] S4 methods semantics questions

Byron Ellis ellis at stat.harvard.edu
Fri Mar 25 11:30:01 CET 2005

Some quick questions about S4 methods.

Does the typing of S4 methods mean that lazy evaluation is no longer 
possible? It seems that you would need to evaluate the arguments to 
determine their type at dispatch.

Second, what role, if any, do default arguments play in S4 methods? I 
notice that you can put default arguments into generics but that the 
dispatch is still done on the type of the calling argument rather than 
the default argument, though the default arg is substituted. However, 
default values for arguments in method definition seem to be stripped 
or, more likely, overridden at dispatch by the calling argument (i.e. 

Some examples:

setGeneric("foo",function(x="bar") standardGeneric("foo"))
setMethod("foo","missing",function(x) print(x))

[1] "bar"

setGeneric("foo",function(x,y) standardGeneric("foo"))
setMethod("foo","numeric",function(x,y=2) x+y)

Error in foo(1) : argument "y" is missing, with no default

Byron Ellis (ellis at stat.harvard.edu)
"Oook" -- The Librarian

More information about the R-devel mailing list