Convenience function to get unevaluated ... function arguments
Feel free. -- Bert On Thu, Jul 26, 2012 at 7:52 AM, Warnes, Gregory
<gregory.warnes at novartis.com> wrote:
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.berton at gene.com> wrote:
Indeed! -- Bert On Wed, Jul 25, 2012 at 3:59 PM, David Winsemius <dwinsemius at 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 at 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 at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
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