1. Nauka
  2. /
  3. Kursy
  4. /
  5. Intermediate R

Connected

ćwiczenie

R przekazuje argumenty przez wartość

Tytuł już podpowiada odpowiedź: R przekazuje argumenty przez wartość. Co to oznacza? Mówiąc wprost – funkcja w R nie może zmienić zmiennej, którą do niej przekazujesz. Przyjrzyjmy się prostemu przykładowi (możesz go wypróbować w konsoli):

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

Wewnątrz funkcji triple() argument x zostaje nadpisany przez wartość pomnożoną przez trzy. Następnie ta nowa wartość x jest zwracana. Jeśli wywołasz tę funkcję ze zmienną a równą 5, otrzymasz 15. Ale czy wartość a się zmieniła? Gdyby R przekazywało a do triple() przez referencję, nadpisanie x wewnątrz funkcji wpłynęłoby też na zmienną a poza funkcją. R przekazuje jednak przez wartość, więc obiekty przekazywane do funkcji nigdy nie ulegają zmianie – chyba że wykonasz jawne przypisanie. a pozostaje równe 5, nawet po wywołaniu triple(a).

Które z poniższych stwierdzeń jest fałszywe w odniesieniu do poniższego kodu?

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

Instrukcje

50 XP

Możliwe odpowiedzi