Kom igångKom igång gratis

R skickar argument med värde

Titeln avslöjar det redan: R skickar argument med värde. Vad innebär det? Enkelt uttryckt betyder det att en R-funktion inte kan ändra den variabel du skickar in till funktionen. Titta på ett enkelt exempel (prova det i konsolen):

triple <- function(x) {
  x <- 3*x
  x
}
a <- 5
triple(a)
a

Inuti funktionen triple() skrivs argumentet x över med sitt värde multiplicerat med tre. Därefter returneras detta nya x. Om du anropar funktionen med variabeln a satt till 5 får du 15. Men ändrades värdet på a? Om R skickade a till triple() med referens skulle överskrivningen av x inuti funktionen påverka variabeln a utanför funktionen. R skickar emellertid med värde, vilket innebär att de R-objekt du skickar till en funktion aldrig kan ändras om du inte gör en explicit tilldelning. a är fortfarande lika med 5, även efter anropet triple(a).

Vilket av följande påståenden är falskt om nedanstående kod?

increment <- function(x, inc = 1) {
  x <- x + inc
  x
}
count <- 5
a <- increment(count, 2)
b <- increment(count)
count <- increment(count, 2)

Den här övningen är en del av kursen

R för medelnivå

Visa kurs

Interaktiv övning med praktiskt arbete

Gör teori till handling med en av våra interaktiva övningar

Starta övningen