function
Definice funkce
function {base} | Dokumentace R v češtině |
Popis
Tato funkce posyktuje základní mechanismy pro definování nových funkcí v jazyce R.
Použití
function( arglist ) expr
return(value)
Argumenty
arglist |
může obsahovat žádný, jeden, nebo více názvů. Lze zadat i ve formátu název=výraz. |
expr |
výraz. |
value |
výraz. |
Detaily
Názvy v seznamu argumentů mohou být nestandardní, uvedené ve zpětných uvozovkách.
Pokud chybí value
, je navrácena NULL
. Pokud se jedná o samostatný výraz, je navrácena hodnota vyhodnoceného výrazu. (Výraz je vyhodnocen hned, jak je volána funkce return
, v hodnotícím rámci funkce a před vyhodnocením výrazu on.exit
.)
Pokud funkce dojde nakonec bez volání return
, navrátí se hodnota posledního hodnoceného výrazu.
Technické detaily
V R existují i jiné typy funkcí: popsaný typ se nazývá uzávěr (closure, název pochází z LISP) a odlišuje se od primitivních funkcí.
Uzávěry mají tři části: formals
(seznam argumentů), body
(expr
v části ‘Použití’) a také environment
, které poskytuje prostor pro vyhodnocování.
K dispozici je i další volitelný komponent pro případ, že je uzávěr kompilován do bajtkódu. Za normálních okolností není pro uživatele viditelný, ovšem zobrazí se v momentu, kdy dojde k vytištění funkce.
Reference
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
Příklady
norm <- function(x) sqrt(x%*%x)
norm(1:4)
## Anonymní funkce:
(function(x, y){ z <- x^2 + y^2; x+y+z })(0:7, 1)