On 25/05/2011 2:05 PM, Peter Danenberg wrote:
>  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.

I suppose you can do a clunky workaround like this:

  debug <- function(e1, e2, sentinel) {
    e1 <- if(!missing(e1)) substitute(e1)
    e2 <- if(!missing(e2)) substitute(e2)
if (!missing(sentinel)) stop("this function only handles 2 expressions")
    print(e1)
    print(e2)
}

(but use some finite limit that's more than 2).

Duncan Murdoch

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to