I agree that it would be useful to be able to manipulate the contents of <...>. Perhaps syntax like:
dots <- dotargs() # equivalent to dots <- list(...) val1 <- dotargs('arg1') to extract the contents of <...> and dotargs('arg1') <- val1 to modifiy the argument 'arg1' would do the trick. Then one could do things like myplot <- function(x,y, ...) { plot(0:1, 0:1, type = "n", axes = FALSE) result <- <<do stuff with x,y>> points(result, ...) dotargs('pch') <- NA axis(1, ...) axis(2, ...) dotargs('lwd') <- dotargs('xaxp') <- dotartgs('yaxp') <- NULL title(...) } -Greg > -----Original Message----- > From: Martin Maechler [mailto:[EMAIL PROTECTED]] > Sent: Tuesday, December 17, 2002 1:07 PM > To: [EMAIL PROTECTED] > Subject: [Rd] Changing "..." inside a function: impossible? desirable? > > > This is was something like a request for your comments, thoughts > on the topic... > > Many of you will know that the "..." (aka \dots) argument is > very useful for passing ``further graphical parameters'', > but can be a pain when itself is passed to too many plotting > functions inside your own function. > An artificial example being > > myplot <- function(x,y, ...) { > > plot(0:1, 0:1, type = "n", axes = FALSE) > > result <- <<do stuff with x,y>> > > points(result, ...) > axis(1, ...) > axis(2, ...) > title(...) > } > > It's clear that some things in "..." can be passed to title() and > some to axis(), etc. > Of course the above is really silly, but I have a situation > where I'd like to see if something, say, `myarg' is part of "..." > {piece of cake easy, see below} but then I want to *eliminate* > it from "..." such that I can pass "..." down to other functions > which would want to see a `myarg' argument. > > Something like > > if("myarg" %in% (naml <- names(list(...)))) { > ## ok, it's there, take it out > marg <- list(...)$ marg > > ## what I now would like is > > ... <- unlist( list(...)["myarg" != naml] ) > } > > > BTW: one relatively ugly workaround is to use the above *list* > say nlist <- list(...)["myarg" != naml] > and do all subsequent call where I'd had "..." as > do.call( <funname> , c(list( <<other args to funnname>> > ), nlist)) > but this really obfuscates the code horrendously. > > PS: > I know that using a pars = list(.) argument instead of "..." > is another alternative (that we have been using) as well, > but lets assume this can't be done, because of > compatibility reasons. > > Martin Maechler <[EMAIL PROTECTED]> http://stat.ethz.ch/~maechler/ Seminar fuer Statistik, ETH-Zentrum LEO C16 Leonhardstr. 27 ETH (Federal Inst. Technology) 8092 Zurich SWITZERLAND phone: x-41-1-632-3408 fax: ...-1228 <>< ______________________________________________ [EMAIL PROTECTED] mailing list http://www.stat.math.ethz.ch/mailman/listinfo/r-devel LEGAL NOTICE\ Unless expressly stated otherwise, this message is ... [[dropped]] ______________________________________________ [EMAIL PROTECTED] mailing list http://www.stat.math.ethz.ch/mailman/listinfo/r-devel