ÎncepețiÎncepe gratuit

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

Vezi cursul

Exercițiu interactiv practic

Transformă teoria în practică cu unul dintre exercițiile noastre interactive

Începe exercițiul