Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com
> -----Original Message----- > From: William Dunlap > Sent: Wednesday, May 25, 2011 11:20 AM > To: 'Peter Danenberg' > Cc: r-devel@r-project.org > Subject: RE: [Rd] External special functions (SPECIALSXP) > > > f <- function(...) { > + dotArgList <- substitute(list(...)) > + dotArgList > + } > > f(cat("foo\n"), stop("Oops"), warning("Hmm")) > list(cat("foo\n"), stop("Oops"), warning("Hmm")) > > # i.e., no argument was evaluated Or, if you'd prefer a pairlist over a call to list: > fp <- function(...) { + dotArgList <- substitute(...()) + dotArgList + } > fp(message=cat("foo\n"), error=stop("Oops"), possibleProblem=warning("Hmm")) $message cat("foo\n") $error stop("Oops") $possibleProblem warning("Hmm") > class(.Last.value) [1] "pairlist" I would not have thought of this syntax myself but have seen it in other folks' code. > Bill Dunlap > Spotfire, TIBCO Software > wdunlap tibco.com > > > -----Original Message----- > > From: r-devel-boun...@r-project.org > > [mailto:r-devel-boun...@r-project.org] On Behalf Of Peter Danenberg > > Sent: Wednesday, May 25, 2011 11:06 AM > > To: Duncan Murdoch > > Cc: r-devel@r-project.org > > Subject: Re: [Rd] External special functions (SPECIALSXP) > > > > > However, if you don't want to evaluate the arguments, just pass > > > substitute(arg) to your function instead of arg. > > > > Thanks, Duncan; the problem is, I'm trying to substitute on > `...' and > > I don't think I can access `...' without inadvertently > evaluating it. > > > > I'm trying to write a debugging function which, given any number of > > expressions, prints the expression next to its evaluation. > > > > This is trivial to do in the single arity case: > > > > debug <- function(expression) { > > cat(substitute(expression), expression, "\n") > > } > > > > a <- 2 > > debug(a) > > > > a 2 > > > > but I'm not sure how to make it work with variable arity without > > resorting to SPECIALSXP. > > > > ______________________________________________ > > R-devel@r-project.org mailing list > > https://stat.ethz.ch/mailman/listinfo/r-devel > > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel