> 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
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