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å
Interaktiv övning med praktiskt arbete
Gör teori till handling med en av våra interaktiva övningar
Starta övningen