R funkce
Funkce je blok kódu, který se spustí pouze tehdy, když je zavolán.
Do funkce můžete předávat data, známá jako parametry.
Funkce může jako výsledek vrátit data.
Vytvoření funkce
Chcete-li vytvořit funkci, použijte function()
klíčové slovo:
Příklad
my_function <- function() { # create a function with the name my_function
print("Hello World!")
}
Volání funkce
Chcete-li zavolat funkci, použijte název funkce následovaný závorkou, například my_function() :
Příklad
my_function <- function() {
print("Hello World!")
}
my_function() # call the function named my_function
Argumenty
Informace lze předávat funkcím jako argumenty.
Argumenty jsou uvedeny za názvem funkce v závorkách. Můžete přidat tolik argumentů, kolik chcete, stačí je oddělit čárkou.
Následující příklad má funkci s jedním argumentem (fname). Když je funkce volána, předáme křestní jméno, které se používá uvnitř funkce k vytištění celého jména:
Příklad
my_function <- function(fname) {
paste(fname, "Griffin")
}
my_function("Peter")
my_function("Lois")
my_function("Stewie")
Parametry nebo argumenty?
Termíny „parametr“ a „argument“ lze použít pro stejnou věc: informace, které jsou předány funkci.
Z pohledu funkce:
Parametr je proměnná uvedená v závorkách v definici funkce.
Argument je hodnota, která je odeslána funkci při jejím volání.
Počet argumentů
Ve výchozím nastavení musí být funkce volána se správným počtem argumentů. To znamená, že pokud vaše funkce očekává 2 argumenty, musíte funkci volat se 2 argumenty, ne více a ne méně:
Příklad
Tato funkce očekává 2 argumenty a dostane 2 argumenty:
my_function <- function(fname, lname) {
paste(fname, lname)
}
my_function("Peter", "Griffin")
Pokud se pokusíte volat funkci s 1 nebo 3 argumenty, dostanete chybu:
Příklad
Tato funkce očekává 2 argumenty a dostane 1 argument:
my_function <- function(fname, lname) {
paste(fname, lname)
}
my_function("Peter")
Výchozí hodnota parametru
Následující příklad ukazuje, jak použít výchozí hodnotu parametru.
Pokud funkci zavoláme bez argumentu, použije výchozí hodnotu:
Příklad
my_function <- function(country = "Norway") {
paste("I am
from", country)
}
my_function("Sweden")
my_function("India")
my_function()
# will get the default value, which is Norway
my_function("USA")
Návratové hodnoty
Chcete-li, aby funkce vrátila výsledek, použijte return()
funkci:
Příklad
my_function <- function(x) {
return (5 * x)
}
print(my_function(3))
print(my_function(5))
print(my_function(9))
Výstupem výše uvedeného kódu bude:
[1] 15
[1] 25
[1] 45
Vnořené funkce
Existují dva způsoby, jak vytvořit vnořenou funkci:
- Volání funkce v rámci jiné funkce.
- Napište funkci v rámci funkce.
Příklad
Volání funkce v rámci jiné funkce:
Nested_function <- function(x, y) {
a <- x + y
return(a)
}
Nested_function(Nested_function(2,2), Nested_function(3,3))
Příklad vysvětlen
Funkce říká x, aby přidal y.
První vstup Nested_function(2,2) je "x" hlavní funkce.
Druhý vstup Nested_function(3,3) je "y" hlavní funkce.
Výstup je tedy (2+2) + (3+3) = 10 .
Příklad
Napište funkci do funkce:
Outer_func <- function(x) {
Inner_func <- function(y) {
a <- x + y
return(a)
}
return
(Inner_func)
}
output <- Outer_func(3) # To
call the Outer_func
output(5)
Příklad vysvětlen
Funkci nemůžete volat přímo, protože Inner_func byl definován (vnořen) uvnitř Outer_func.
Nejprve musíme zavolat Outer_func, abychom jako druhý krok zavolali Inner_func.
Musíme vytvořit novou proměnnou nazvanou výstup a dát jí hodnotu, která je zde 3.
Poté vytiskneme výstup s požadovanou hodnotou "y", což je v tomto případě 5.
Výstup je tedy 8 (3 + 5).
Rekurze
R také přijímá rekurzi funkce, což znamená, že definovaná funkce může volat sama sebe.
Rekurze je běžný matematický a programovací koncept. To znamená, že funkce volá sama sebe. To má tu výhodu, že můžete procházet daty a dosáhnout výsledku.
Vývojář by měl být s rekurzí velmi opatrný, protože může být docela snadné sklouznout k psaní funkce, která nikdy nekončí, nebo funkce, která využívá nadměrné množství paměti nebo výkonu procesoru. Pokud je však rekurze napsána správně, může být velmi účinným a matematicky elegantním přístupem k programování.
V tomto příkladu tri_recursion()
je funkce, kterou jsme definovali, aby se volala sama ("rekurze"). Jako data používáme
k
proměnnou, která se snižuje ( -1
) pokaždé, když opakujeme. Rekurze končí, když podmínka není větší než 0 (tj. když je 0).
Novému vývojáři může chvíli trvat, než přijde na to, jak přesně to funguje, nejlepší způsob, jak to zjistit, je otestovat a upravit.
Příklad
tri_recursion <- function(k) {
if (k > 0) {
result <- k + tri_recursion(k - 1)
print(result)
} else {
result = 0
return(result)
}
}
tri_recursion(6)