Indeed! -- Bert
On Wed, Jul 25, 2012 at 3:59 PM, David Winsemius <dwinsem...@comcast.net> wrote: > > On Jul 24, 2012, at 4:39 PM, Bert Gunter wrote: > >> Folks: >> >> Herein is a suggestion for a little R convenience function mainly to >> obtain unevaluated ... function arguments. It arose from a query on >> R-help on how to get these arguments. The standard (I think) idiom to >> do this is via >> >> match.call(expand.dots=FALSE)$... >> >> However, Bill Dunlap pointed out that this repeats the argument >> matching of the function call and suggested a couple of alternatives >> that do not, one of which I've adapted as the following function,fun >> (I'll comment on naming in a second): >> >> fun <- as.list(substitute((...), env = parent.frame()))[-1] > > > I think instead: > > fun <- function() as.list(substitute((...), env = parent.frame()))[-1] > > -- > David. >> >> >> Typical usage would be: >> >> f <- function(x, ...,y)fun() >> >> e.g. >> >>> f(x = 5,z=sin(a),y=3,stop("oh"),w=warning("Yikes")) >> >> $z >> sin(a) >> >> [[2]] >> stop("oh") >> >> $w >> warning("Yikes") >> >> It turns out that (surprisingly to me) the substitute idiom is faster >> than the match.call idiom, although the difference appears >> unimportant, since both are so fast. And it is a little slower when >> wrapped into a function, anyway -- I wasn't able to figure out a >> convenient way to wrap the match.call version into a function. >> >> The question is where -- if anywhere -- should this little one-liner >> go? Seems to me that there are 3 possibilities: >> 1. Nowhere. Unnecessary and trivial. An entirely reasonable response, >> imho; I leave it to guRus to make this judgment. >> >> 2. In with match.call(); in which case a name like match.dots would >> seem appropriate. >> >> 3. In with substitute(); in which case something like substituteDots >> to make the relationship clear might be appropriate. >> >> If R core or others do want to use this, I would be happy to write the >> line or two of additional documentation required (if no one else wants >> to). >> >> And to repeat... I know this is trivial, so no explanation or response >> is needed if it is decided to ignore it. >> >> Best, >> Bert >> >> >> >> >> -- >> >> Bert Gunter >> Genentech Nonclinical Biostatistics >> >> Internal Contact Info: >> Phone: 467-7374 >> Website: >> >> http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm >> >> ______________________________________________ >> R-devel@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel > > > David Winsemius, MD > Heritage Laboratories > West Hartford, CT > -- Bert Gunter Genentech Nonclinical Biostatistics Internal Contact Info: Phone: 467-7374 Website: http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel