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