I'll be glad to add it to the gtools package if it doesn't (immediately) go into one of the core packages.
Sent from my iPhone On Jul 26, 2012, at 7:35 AM, "Bert Gunter" <gunter.ber...@gene.com> wrote: > 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 ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel