| formals {base} | R Documentation |
Access to and Manipulation of the Formal Arguments
Description
Get or set the formal arguments of a function.
Usage
formals(fun = sys.function(sys.parent()), envir = parent.frame())
formals(fun, envir = environment(fun)) <- value
Arguments
fun |
a |
envir |
|
value |
Details
For the first form, fun can also be a character string naming
the function to be manipulated, which is searched for in envir,
by default from the parent
frame. If it is not specified, the function calling formals is
used.
Only closures, i.e., non-primitive functions, have formals, not
primitive functions.
Note that formals(args(f)) gives a formal argument list for
all functions f, primitive or not.
Value
formals returns the formal argument list of the function
specified, as a pairlist, or NULL for a
non-function or primitive.
The replacement form sets the formals of a function to the
list/pairlist on the right hand side, and (potentially) resets the
environment of the function, dropping attributes.
See Also
formalArgs (from methods), a shortcut for names(formals(.)).
args for a human-readable version, and as
intermediary to get formals of a primitive function.
alist to construct a typical formals value,
see the examples.
The three parts of a (non-primitive) function are its
formals, body, and environment.
Examples
require(stats)
formals(lm)
## If you just want the names of the arguments, use formalArgs instead.
names(formals(lm))
methods:: formalArgs(lm) # same
## formals returns a pairlist. Arguments with no default have type symbol (aka name).
str(formals(lm))
## formals returns NULL for primitive functions. Use it in combination with
## args for this case.
is.primitive(`+`)
formals(`+`)
formals(args(`+`))
## You can overwrite the formal arguments of a function (though this is
## advanced, dangerous coding).
f <- function(x) a + b
formals(f) <- alist(a = , b = 3)
f # function(a, b = 3) a + b
f(2) # result = 5