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:
The Art of R Programming: A Tour of Statistical Software Design
Hands-On Programming with R: Write Your Own Functions and Simulations
2 Gedanken zu „Programmieren mit R: Alles, was passiert, ist ein Funktionsaufruf“