function {base} | R Documentation |
Function Definition
Description
These functions provide the base mechanisms for defining new functions in the R language.
Usage
function( arglist ) expr
\( arglist ) expr
return(value)
Arguments
arglist |
empty or one or more (comma-separated) ‘name’ or
‘name = expression’ terms
and/or the special token |
expr |
an expression. |
value |
an expression. |
Details
The names in an argument list can be back-quoted non-standard names (see ‘backquote’).
If value
is missing, NULL
is returned. If it is a
single expression, the value of the evaluated expression is returned.
(The expression is evaluated as soon as return
is called, in
the evaluation frame of the function and before any
on.exit
expression is evaluated.)
If the end of a function is reached without calling return
, the
value of the last evaluated expression is returned.
The shorthand form \(x) x + 1
is parsed as function(x) x
+ 1
. It may be helpful in making code containing simple function
expressions more readable.
Technical details
This type of function is not the only type in R: they are called closures (a name with origins in LISP) to distinguish them from primitive functions.
A closure has three components, its formals
(its argument
list), its body
(expr
in the ‘Usage’
section) and its environment
which provides the
enclosure of the evaluation frame when the closure is used.
There is an optional further component if the closure has been byte-compiled. This is not normally user-visible, but is indicated when functions are printed.
References
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
See Also
args
.
formals
, body
and
environment
for accessing the component parts of a
function.
debug
for debugging; using invisible
inside
return(.)
for returning invisibly.
Examples
norm <- function(x) sqrt(x%*%x)
norm(1:4)
## An anonymous function:
(function(x, y){ z <- x^2 + y^2; x+y+z })(0:7, 1)