formals {base}  R Documentation 
Get or set the formal arguments of a function
.
formals(fun = sys.function(sys.parent()), envir = parent.frame())
formals(fun, envir = environment(fun)) < value
fun 
a 
envir 

value 
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., nonprimitive functions, have formals, not
primitive functions.
Note that formals(args(f))
gives a formal argument list for
all functions f
, primitive or not.
formals
returns the formal argument list of the function
specified, as a pairlist
, or NULL
for a
nonfunction 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
.
formalArgs
(from methods), a shortcut for names(formals(.))
.
args
for a humanreadable 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 (nonprimitive) function
are its
formals
, body
, and environment
.
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