From roebuck at odin.mdacc.tmc.edu  Fri Feb 11 00:06:25 2005
From: roebuck at odin.mdacc.tmc.edu (Paul Roebuck)
Date: Fri Feb 11 00:06:38 2005
Subject: [Rd] Canonical S4 Method signature
Message-ID: <Pine.OSF.4.58.0502101640490.131187@odin.mdacc.tmc.edu>

I have trouble finding applicable examples of S4 methods.
Could someone tell me the canonical method for a function
that takes either one or two arguments corresponding to
dimensions? So if vector output desired, only one argument
'n' would be provided. For matrix, two would be provided
corresponding to 'm' and 'n' in that order. And therein
lies the rub as I don't really want to require specifying
the argument name in order to do this.

foo(3)		# n = 3
foo(3, 4)	# m = 3, n = 4
foo(n = 3, 4)	# m = 4, n = 3

What I have come up with thus far is below but that reverses
the order for second case. I could swap them internally if
I knew whether they were specified by name.

setGeneric("foo", function(n, m = n) {
    cat("generic", match.call()[[1]], "\n")
    standardGeneric("foo")
})

One other alternative might be to just use dots for the
function argument and assign them names internally.

Similar functions in some package? Suggestions (besides
not using S4)?

TIA

----------------------------------------------------------
SIGSIG -- signature too long (core dumped)


[Rd] Canonical S4 Method signature
Paul Roebuck