Objekte werden in Zuweisungen kopiert

Die meisten Objekte werden durch Zuweisung unveränderlich (immutable) – R kopiert das Objekt selbst, nicht nur einen Verweis auf das Objekt. Ein Beispiel:

> u <- list(1)
> v <- u
> u[[1]] <- "Hut"
> u
[[1]]
[1] "Hut"

> v
[[1]]
[1] 1

Das gilt für Vektoren, Listen und die meisten Basisdatentypen in R.

Auch auf Funktionsaufrufe trifft das zu. Sehen Sie sich die folgende Funktion genau an. Sie nimmt zwei Argumente entgegen, einen Vektor x und einen Index i, und setzt das i-te Element von x auf 4, weiter tut sie nichts:

> f <- function(x, i) {x[i] = 4}

Jetzt nehmen Sie an, Sie würden einen Vektor w definieren und die Funktion f mit x=w und i=1 aufrufen:

> w <- c(10, 11, 12, 13)
> f(w, 1)

Der Vektor w wird bei Übergabe ...

Get R in a Nutshell now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.