Rev 68948 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
% File src/library/base/man/do.call.Rd% Part of the R package, https://www.R-project.org% Copyright 1995-2014 R Core Team% Distributed under GPL 2 or later\name{do.call}\title{Execute a Function Call}\usage{do.call(what, args, quote = FALSE, envir = parent.frame())}\alias{do.call}\arguments{\item{what}{either a function or a non-empty character string naming thefunction to be called.}\item{args}{a \emph{list} of arguments to the function call. The\code{names} attribute of \code{args} gives the argument names.}\item{quote}{a logical value indicating whether to quote thearguments.}\item{envir}{an environment within which to evaluate the call. Thiswill be most useful if \code{what} is a character string andthe arguments are symbols or quoted expressions.}}\description{\code{do.call} constructs and executes a function call from a name ora function and a list of arguments to be passed to it.}\details{If \code{quote} is \code{FALSE}, the default, then the arguments areevaluated (in the calling environment, not in \code{envir}). If\code{quote} is \code{TRUE} then each argument is quoted (see\code{\link{quote}}) so that the effect of argument evaluation is toremove the quotes -- leaving the original arguments unevaluated when thecall is constructed.The behavior of some functions, such as \code{\link{substitute}},will not be the same for functions evaluated using \code{do.call} asif they were evaluated from the interpreter. The precise semanticsare currently undefined and subject to change.}\value{The result of the (evaluated) function call.}\section{Warning}{This should not be used to attempt to evade restrictions on the use of\code{.Internal} and other non-API calls.}\references{Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)\emph{The New S Language}.Wadsworth & Brooks/Cole.}\seealso{\code{\link{call}} which creates an unevaluated call.}\examples{do.call("complex", list(imag = 1:3))## if we already have a list (e.g., a data frame)## we need c() to add further argumentstmp <- expand.grid(letters[1:2], 1:3, c("+", "-"))do.call("paste", c(tmp, sep = ""))do.call(paste, list(as.name("A"), as.name("B")), quote = TRUE)## examples of where objects will be found.A <- 2f <- function(x) print(x^2)env <- new.env()assign("A", 10, envir = env)assign("f", f, envir = env)f <- function(x) print(x)f(A) # 2do.call("f", list(A)) # 2do.call("f", list(A), envir = env) # 4do.call(f, list(A), envir = env) # 2do.call("f", list(quote(A)), envir = env) # 100do.call(f, list(quote(A)), envir = env) # 10do.call("f", list(as.name("A")), envir = env) # 100eval(call("f", A)) # 2eval(call("f", quote(A))) # 2eval(call("f", A), envir = env) # 4eval(call("f", quote(A)), envir = env) # 100}\keyword{programming}