On Oct 19, 2013, at 19:03 , Duncan Murdoch wrote: > On 13-10-18 1:54 PM, Bert Gunter wrote: >> Yes, similar, but better, as match.call() will get unwanted named >> arguments, too. >> >> However, I do not understand the >> >> substitute(...()) >> >> idiom. Would you care to explain it? (No is an acceptable answer!). > > I suspect it's a bug, though I can't see it's one that's likely to need > fixing. The general idea is that a function call like ...() is parsed into a > pairlist containing just the name "...", then substitute replaces it with the > content of that variable, which is a pairlist containing the unevaluated > argument list. So by that analysis, you might expect to get the same result > using > > pairlist(...) > > However, you don't, because the latter expression evaluates all the arguments > to the function, while Bill's idiom leaves them unevaluated. I can't think of > any documented reason why that should be, but on the other hand, I can't > think of any reason it would cause problems. So I'd say it's unlikely to be > deliberately changed, but it might change as a result of some internal change > to R. > > Duncan Murdoch >
Just curious, does substitute(...()) buy you anything that you don't get from the straightforward match.call(expand.dots=FALSE)$... ??? -pd > >> >> I would have expressed it as: >> >> as.list(substitute(list(...)))[-1] >> >> to convert the parse tree to a list. (which is again better than using >> match.call() ). >> >> Best, >> Bert >> >> On Fri, Oct 18, 2013 at 10:27 AM, William Dunlap <wdun...@tibco.com> wrote: >>>> I am using the ... argument to parmeterize a user define fn to accept >>>> multiple input objects. I subsquently save all these data as a list. >>>> Question: what is the best way to recover or extract the original object >>>> names that were fed to the fn? >>> >>> The following function, ellipsisInfo, returns character strings >>> representing the >>> actual arguments to the function. If the function was called with tags on >>> the >>> arguments, as in ellipsisInfo(tag=argument), it makes those tags the names >>> on the returned character vector. It does not evaluate the ... arguments, >>> so >>> you don't run into problems with evaluating arguments too soon or evaluating >>> ones that should not be evaluated most of the time. >>> >>> ellipsisInfo <- function(...) { >>> # get the unevaluated expressions given as arguments >>> unevaluatedArgs <- substitute(...()) >>> # convert those expressions to text (truncate to single line) >>> unevaluatedArgsAsText <- vapply(unevaluatedArgs, >>> function(a)deparse(a)[1], "") >>> unevaluatedArgsAsText >>> } >>> >>> E.g., >>> >>>> i <- ellipsisInfo(x, log(10), e=exp(1), onProblem=stop("there was a >>>> problem")) >>>> i >>> >>> "x" >>> >>> "log(10)" >>> e >>> "exp(1)" >>> onProblem >>> "stop(\"there was a problem\")" >>>> ifelse(names(i)=="", i, names(i)) # use tag if supplied, otherwise >>>> argument itself >>> [1] "x" "log(10)" "e" >>> [4] "onProblem" >>> >>> Bill Dunlap >>> Spotfire, TIBCO Software >>> wdunlap tibco.com >>> >>> >>>> -----Original Message----- >>>> From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] >>>> On Behalf >>>> Of Dan Abner >>>> Sent: Friday, October 18, 2013 9:06 AM >>>> To: r-help@r-project.org >>>> Subject: [R] Recovering object names when using the ... argument in a fn >>>> XXXX >>>> >>>> Hi all, >>>> >>>> I am using the ... argument to parmeterize a user define fn to accept >>>> multiple input objects. I subsquently save all these data as a list. >>>> Question: what is the best way to recover or extract the original object >>>> names that were fed to the fn? >>>> >>>> Thanks, >>>> >>>> Dan >>>> >>>> [[alternative HTML version deleted]] >>>> >>>> ______________________________________________ >>>> R-help@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. >>> >>> ______________________________________________ >>> R-help@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. >> >> >> > > ______________________________________________ > R-help@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. -- Peter Dalgaard, Professor, Center for Statistics, Copenhagen Business School Solbjerg Plads 3, 2000 Frederiksberg, Denmark Phone: (+45)38153501 Email: pd....@cbs.dk Priv: pda...@gmail.com ______________________________________________ R-help@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.