Zuweisung in R:

Zuweisungen in R werden üblicherweise mit dem Zuweisungs-Operator <- ausgeführt:

a <- 3
a
[1] 3

Manchen Anwendern mag das Gleichheitszeichen vertrauter sein – es funktioniert ebenfalls:

a = 4
a
[1] 4

Parameter-Übergabe mit Gleichheitszeichen: na.rm = TRUE

Bis vor kurzem dachte ich noch, der Zuweisungspfeil wäre eben üblich in R – konnte aber nicht sagen, inwiefern sich seine Funktion vom Gleichzeitszeichen unterscheidet.

Bei Funktionsaufrufen werden Parameter mit dem Gleichheitszeichen übergeben, etwa so:

mean(a, na.rm = TRUE)

Hier teilen wir R mit, dass etwaige Fehlwerte im Vektor a ignoriert werden sollen, sodass der Mittelwert aus den gültigen Werten errechnet wird.  Damit wird die strenge Voreinstellung (na.rm = FALSE) überschrieben, bei der R einen Fehlwert als Ergebnis liefert, sobald auch nur ein Fehlwert in a vorliegt.

Gibt es Situationen, in denen sich diese beiden Möglichkeiten (<- und =) unterscheiden?

Tatsächlich gibt es Situationen, in denen der Zuweisungspfeil funktioniert, das Gleichheitszeichen aber nicht:

wurzel <- function(n) sqrt(1:n)
system.time(result <- wurzel(5e6))
       User      System verstrichen 
       0.03        0.03        0.06

Zunächst definieren wir die Funktion wurzel, die für alle Zahlen von 1 bis n die Wurzel errechnet, wobei n im Funktionsaufruf anzugeben ist.

In diesem Beispiel wird ein Objekt „result“ gebildet, das die Wurzel der Zahlen von 1 bis 5 Millionen enthält (5e6 = 5 000 000). Dazu wird der Zeitbedarf ermittelt.

Hier scheitert die Variante mit dem Gleichheitszeichen:

system.time(result = wurzel(5e6))
Error in system.time(result = wurzel(5e+06)) : 
  unused argument (result = wurzel(5e+06))

Warum ist das so? Hier wird das Gleichheitszeichen als Kennzeichen einer Parameter-Übergabe aufgefasst. Die system.time-Funktion kennt jedoch keinen Parameter namens result. Beim Zuweisungspfeil im oberen Beispiel versteht R hingegen, dass result kein Parameter ist, sondern ein neu zu bildendes Objekt.

Ergo: Es ist sinnvoll, Zuweisungspfeile und Gleichheitszeichen auseinander zu halten.

Freue mich über Kommentare!Antwort abbrechen

Hinweispflicht zu Cookies

Webseitenbetreiber müssen, um Ihre Webseiten DSGVO konform zu publizieren, ihre Besucher auf die Verwendung von Cookies hinweisen und darüber informieren, dass bei weiterem Besuch der Webseite von der Einwilligung des Nutzers in die Verwendung von Cookies ausgegangen wird.

Der eingeblendete Hinweis Banner dient dieser Informationspflicht.

Sie können das Setzen von Cookies in Ihren Browser Einstellungen allgemein oder für bestimmte Webseiten verhindern. Eine Anleitung zum Blockieren von Cookies finden Sie hier.

Wir benutzen Cookies um die Nutzerfreundlichkeit der Webseite zu verbessen. Durch Deinen Besuch stimmst Du dem zu.
Die mobile Version verlassen