\HeaderA{force}{Force evaluation of an Argument}{force}
\keyword{data}{force}
\keyword{programming}{force}
\begin{Description}\relax
Forces the evaluation of a function argument.
\end{Description}
\begin{Usage}
\begin{verbatim}
force(x)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{x}] a formal argument.
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
\code{force} forces the evaluation of a formal argument.  This can
be useful if the argument will be captured in a closure by the lexical
scoping rules and will later be altered by an explicit assignment or
an implicit assignment in a loop or an apply function.
\end{Details}
\begin{Note}\relax
\code{force} does not force the evaluation of \LinkA{promises}{promises}.
\end{Note}
\begin{Examples}
\begin{ExampleCode}
f <- function(y) function() y
lf <- vector("list", 5)
for (i in seq(along = lf)) lf[[i]] <- f(i)
lf[[1]]()  # returns 5

g <- function(y) { force(y); function() y }
lg <- vector("list", 5)
for (i in seq(along = lg)) lg[[i]] <- g(i)
lg[[1]]()  # returns 1
\end{ExampleCode}
\end{Examples}

