R transmite argumentele prin valoare
Titlul îți dă deja răspunsul: R transmite argumentele prin valoare. Ce înseamnă asta? Pe scurt, înseamnă că o funcție R nu poate modifica variabila pe care i-o transmiți. Să ne uităm la un exemplu simplu (încearcă-l în consolă):
triple <- function(x) {
x <- 3*x
x
}
a <- 5
triple(a)
a
În interiorul funcției triple(), argumentul x este suprascris cu valoarea sa înmulțită cu trei. Apoi, noul x este returnat. Dacă apelezi această funcție cu o variabilă a egală cu 5, obții 15. Dar s-a schimbat valoarea lui a? Dacă R ar transmite a către triple() prin referință, suprascrierea lui x din interiorul funcției s-ar propaga și asupra variabilei a, din afara funcției. Însă R transmite prin valoare, deci obiectele R pe care le transmiți unei funcții nu se pot modifica niciodată fără o atribuire explicită. a rămâne egal cu 5, chiar și după apelarea triple(a).
Poți să identifici care dintre afirmațiile de mai jos este falsă în legătură cu următorul bloc de cod?
increment <- function(x, inc = 1) {
x <- x + inc
x
}
count <- 5
a <- increment(count, 2)
b <- increment(count)
count <- increment(count, 2)
Acest exercițiu face parte din cursul
R intermediar
Exercițiu interactiv practic
Transformă teoria în practică cu unul dintre exercițiile noastre interactive
Începe exercițiul