R předává argumenty hodnotou
Název to prozrazuje: R předává argumenty hodnotou. Co to znamená? Jednoduše řečeno, funkce v R nemůže změnit proměnnou, kterou do ní předáš. Podívejme se na jednoduchý příklad (vyzkoušej si ho v konzoli):
triple <- function(x) {
x <- 3*x
x
}
a <- 5
triple(a)
a
Uvnitř funkce triple() se argument x přepíše svou trojnásobnou hodnotou a toto nové x se vrátí jako výsledek. Když funkci zavoláš s proměnnou a rovnou 5, dostaneš 15. Ale změnila se hodnota a? Kdyby R předávalo a do triple() odkazem, přepsání x uvnitř funkce by se projevilo i v proměnné a vně funkce. Jenže R předává hodnotou, takže objekty, které funkci předáš, se nikdy nezmění — pokud neproveteš explicitní přiřazení. a zůstane rovno 5, i po zavolání triple(a).
Dokážeš určit, které z následujících tvrzení je o níže uvedeném kódu nepravdivé?
increment <- function(x, inc = 1) {
x <- x + inc
x
}
count <- 5
a <- increment(count, 2)
b <- increment(count)
count <- increment(count, 2)
Toto cvičení je součástí kurzu
Intermediate R
Interaktivní praktické cvičení
Proměňte teorii v praxi s jedním z našich interaktivních cvičení
Začít cvičení