[R] turning R expressions into functions?

William Dunlap wdunlap at tibco.com
Mon Jul 23 23:25:38 CEST 2012


list(...) evaluates the things in ...
E.g.,
   > f0 <- function(x, ...) list(...)
   > f0(1, warning("Hmm"), stop("Oops"), cat("some output\n"))[[2]]
   Error in f0(1, warning("Hmm"), stop("Oops"), cat("some output\n")) : Oops
   In addition: Warning message:
   In f0(1, warning("Hmm"), stop("Oops"), cat("some output\n")) : Hmm

You can use the odd idiom substitute(...()) to get the unevaluated ... arguments:
   > f1 <- function(x, ...) substitute(...())
   > f1(1, warning("Hmm"), stop("Oops"), cat("some output\n"))
   [[1]]
   warning("Hmm")

   [[2]]
   stop("Oops")

   [[3]]
   cat("some output\n")


Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com


> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On
> Behalf Of S Ellison
> Sent: Monday, July 23, 2012 2:12 PM
> To: Jochen Voß
> Cc: r-help at r-project.org
> Subject: Re: [R] turning R expressions into functions?
> 
> >> One of the things I would love to add to my package would be the
> >> ability to compare more than two expressions in one call.  But
> >> unfortunately, I haven't found out so far whether (and if so, how) it
> >> is possible to extract the elements of a "..." object without
> >> evaluating them.
> >
> >Have a look at match.call.
> 
> ... or use
> dotlist <- list(...)
> 
> to get a list of everything included in ...
> 
> S Ellison
> 
> *****************************************************************
> **
> This email and any attachments are confidential. Any use...{{dropped:8}}
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list