Programmieren mit R: Alles, was passiert, ist ein Funktionsaufruf

R ist eine Implementierung der Programmiersprache S, die in den 1970er Jahren von John Chambers bei Bell Labs entwickelt wurde. R wurde ab 1992 von Ross Ihaka und Robert Gentleman geschrieben und ab 1993 verbreitet; seit 1997 gibt es das R Development Core Team, dem auch John Chambers angehört. Von Chambers stammt folgendes Zitat, das wesentliche Grundzüge von R charakterisiert:

Alles, was existiert, ist ein Objekt.
Alles, was passiert, ist ein Funktionsaufruf.

Alles ist ein Funktionsaufruf

Wie wörtlich der zweite Teil des Zitats zu nehmen ist, soll im Folgenden veranschaulicht werden: Selbst so unverdächtige Zeichen wie „+“ und „-“ sind Funktionen. Beweis:

3 + 4
[1] 7
> "+"(3, 4)
[1] 7

Da das Pluszeichen kein „normaler“ Buchstabe ist, muss es in Anführungszeichen (doppelte oder auch einfache, sog. backticks) gesetzt werden. Ansonsten funktioniert es wie andere Funktionsaufrufe: Funktionsname(Parameter 1, Parameter 2), so wie etwa
mean(x, na.rm = TRUE).

> 10 - 3
[1] 7
> "-"(10, 3)
[1] 7

Das gilt ebenso für das Minuszeichen …

21 / 3
[1] 7
> "/"(21, 3)
[1] 7

… wie für Divisionen und (oben nicht gezeigt) für Multiplikationen „*“.

Die mathematischen Operatoren werden als infix operators bezeichnet: sie stehen zwischen, nicht vor den Funktionsparametern (prefix). Weitere Infix-Operatoren werden mit %-Zeichen gekennzeichnet, z. B. %in%, um zu prüfen, ob bestimmte Zeichen in einem Vektor vorkommen, oder %*% für Matrix-Multiplikationen. Die hohe Flexibilität von R beinhaltet auch die Möglichkeit, eigene infix-Operatoren zu definieren.

Auch das sog. subsetting, also der Zugriff auf einzelne Elemente von Datenstrukturen mit eckigen Klammern, ist ein Funktionsaufruf:

mtcars[1, 3]
[1] 160
> "["(mtcars, 1, 3)
[1] 160

Literatur-Empfehlungen:

 

Freue mich über Kommentare!