[R] Using the ``...'' argument.

Rolf Turner rolf at math.unb.ca
Fri Nov 8 23:35:40 CET 2002

Suppose that I have a function fff which calls a couple of functions
foo and bar, and that foo takes optional arguments a and b, and bar
takes optional arguments u and v.

Is there an elegant way of passing ***both*** sets of optional
arguments via a ``...'' argument for fff?

I'd like to be able to have a structure like:

	fff(x,y,z,...) {
	a1 <- foo(x,y,...)
	b1 <- bar(z,...)

and be able to give calls such as

	w1 <- fff(x,y,z,a=2,b=3,u=4,v=5)
	w2 <- fff(x,y,z,a=2,v=5)         # Letting b take its default value
                                         # in foo() and u take its default
					 # value in bar()
	w3 <- fff(x,y,z,a=2,b=3)         # Letting both u and v take their
					 # default values in bar()

and so on.  This of course doesn't work --- complaints about
``unused arguments'' are generated and fff() falls over.

One workaround that I can think of is

	fff(x,y,z,...) {
	tmp <- list(x,y,...)
	tmp[c("u","v")] <- NULL
	a1 <- do.call("foo",NULL)
	tmp <- list(z,...)
	tmp[c("a","b")] <- NULL
	b1 <- do.call("bar",tmp)

but this is pretty kludgy.  Is there a better way?  Am I overlooking
something obvious?


						Rolf Turner
						rolf at math.unb.ca
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch

More information about the R-help mailing list