30 Jahre: Meilensteine der Programmiersprache R

Vor gut 30 Jahren wurde die Programmiersprache R veröffentlicht. Geschichte im Überblick: Meilensteine wie CRAN, UseR, ggplot2, ROpenSci, dplyr, R-Ladies, Shiny, tidyverse, Tidy Tuesday, Quarto, Posit, WebR, Positron, …

R Logo

Vor einem Jahr, im August 2023, „feierte“ die Programmiersprache R den 30. Jahrestag ihrer Erstveröffentlichung 1993. Hier einige Meilensteine aus drei Jahrzehnten – ein Blick in die Geschichte von R:

1993: R als Implementation der Programmiersprache S

1993 entwickeln Ross Ihaka und Robert Gentleman R als Implementierung der bereits seit den 1970er Jahren bestehenden Programmiersprache S. S wiederum wurde von John Chambers kreiert. Zielgruppe waren Statistik-Anwender, ausdrücklich auch Studenten, also keine Programmierer im engeren Sinn. Der Name R liegt zum einen im Alphabet neben S, zum anderen bezieht er sich auf die Vornamen der Entwickler – zwei Statistik-Professoren der Universität Auckland.

R Geburtsort Auckland August 1993, leaflet-Karte mit OpenStreetMap
R Geburtsort Auckland August 1993, leaflet-Karte mit OpenStreetMap

 
Obenstehende Grafik kann übrigens dank des leaflet-Pakets mit folgendem minimalistischem R-Code erstellt werden, inklusive der Möglichkeit, in die Karte hinein- und wieder herauszuzoomen:

library(tidyverse)
library(leaflet)

m <- leaflet() %>%
addTiles() %>%
addMarkers(lng=174.768, lat=-36.852,
popup="R was born here in August 1993!")
m

1995: Programmiersprache R unter GNU-Lizenz

1995 wurde R unter GNU-Lizenz veröffentlicht, als Copyleft: R durfte damit nicht nur kosten- bzw. gebührenfrei genutzt, sondern auch weiterverbreitet werden. Bedingung: Änderungen am Original-Code mussten ebenfalls mit GPL (General Public License) lizenziert werden.

1996: Publikation von Ihaka / Gentleman

Ross Ihaka und Robert Gentleman publizieren „R: A Language for Data Analysis and Graphics“ in der renommierten Fachzeitschrift Journal of Computational and Graphical Statistics. Darin beschreiben sie ihre Erfahrungen beim Design und der Implementierung einer Programmiersprache für Statistik. R sollte die Stärken der beiden Sprachen S und Scheme vereinen.

Ross Ihaka und Robert Gentleman, die Entwickler von R

1997: Geburtsjahr von CRAN

1997 hoben Kurt Hornik und Friedrich Leisch CRAN aus der Taufe: Das Comprehensive R Archive Network. Damit gibt es eine zentrale Anlaufstelle für R-Versionen (für verschiedene Betriebssysteme, sowie Archiv älterer Versionen), Dokumentation und Erweiterungspakete. Dahinter steht ein ausgefeiltes Testsystem, das sicherstellen soll, dass Paket-Updates weiterhin mit damit verknüpfter Software, sogenannten dependencies, zusammenspielen.

Friedrich Leisch (geboren 1968) ist leider 2024 verstorben. Kurt Hornik widmete ihm einen Vortrag bei der UseR-Konferenz 2024 in Salzburg. Von Leisch stammt die Idee, R-Code in LaTeX einzubetten und durch die Ergebnisse der Berechnungen zu ersetzen. Was mit Sweave begann, ist heute dank RMarkdown und Quarto eine elegante Möglichkeit, reproduzierbare Berichte ohne manuelle Copy & Paste-Schritte zu erstellen. Leisch war auch Mitgründer der Stiftung: R Foundation for Statistical Computing.

Bei derselben UseR-Konferenz sprach Kurt Hornik auch über Mehr als 25 Jahre CRAN. Was ich bisher nicht wusste: Vor CRAN gab es bereits CTAN – The Comprehensive TeX Archive Network, sowie CPAN – The Comprehensive Perl Archive Network. Der Vortrag lohnt sich: er macht klar, welch enorme Herausforderung die CRAN-Betreuung darstellt und warum es wichtig ist, dass R-Pakete aktiv betreut werden.

Einige interessante Zahlen zu CRAN und R-Paketen auf CRAN:

  • Paket-Updates: Durchschnittlich 6, Median 3, Maximum 217 (!)
  • Beispiele: Matrix (217 Updates), spatstat 212, RcppArmadillo 170, mgcv 167, rgdal 152
  • Details zu Check-Ergebnissen von R-Paketen, aufgeschlüsselt nach Betriebssystemen, mit mehreren Linux-Distributionen sowie Mac aufgeschlüsselt nach arm64 und x86_64;
    tausende „Notes“, zig bis hunderte „Warnings“, 2-3stellige Zahlen für „Error“ bei über 20.000 R-Paketen.
    Umgang mit Errors bedeutet Handarbeit, Kontakt zu Package Maintainern, etc.
  • Manuell durchgeführte Handlungen, wie Pakete hinzufügen, archivieren, aus dem Archiv holen, entfernen: mehr als 10 pro Tag im Schnitt:
    Neu 5.5, archiviert 4.1, aus dem Archiv geholt 2.3, entfernt 0.03
  • CRAN Task Views: 44 Themen, decken über 4.500 R-Pakete ab, etwas über 20% der CRAN-Pakete

2000: Programmiersprache R, Version 1.0

Zum neuen Jahrtausend erschien die Version 1.0, die als „erste stabile Version“ von R gilt. Als Erscheinungsdatum durfte der ungewöhnliche 29. Februar herhalten.

Highlights der R-Version 1.0: try(), um Fehlern zu entkommen, sowie by() und merge() zur Bearbeitung von data frames.

2001: R News und Bioconductor

Das Jahr 2001 sah die erste Veröffentlichung von R News, in der es unter anderem um Datenbankanbindung mit R sowie R auf Macintosh ging.

Ebenfalls 2001 wurde Bioconductor gegründet, ein Open Source-Projekt für die Analyse von Genomdaten. Dort gibt es, zusätzlich zu CRAN, über 2000 weitere R-Pakete.

2003: Stiftung – R Foundation

2003 wurde die bereits oben erwähnte R Foundation for Statistical Computing mit Sitz in Wien gegründet. Zum Zeitpunkt dieses Beitrags dient Simon Urbanek (bekannt u. a. für das iotools-Paket, Grafik-Software wie Cairo, jpeg, tiff, png und das multicore-Paket, das im Paket parallel aufging) als Präsident, Kurt Hornik als Vizepräsident, Martin Mächler als Generalsekretär und Torsten Hothorn (u. a. Pakete mvtnorm, party für recursive partitioning) als Schatzmeister. John Chambers (S) und Dirk Eddelbuettel (Rcpp) sind Mitglieder.

2004: Erste UseR-Konferenz und R 2.0

Im Jahr 2004 fand die erste UseR-Konferenz an der TU Wien statt. Referenten waren überwiegend Mitglieder der Kerngruppe R Core, wie Paul Murrell, Luke Tierney, Douglas Bates und Brian Ripley.

Im selben Jahr erschien R Version 2.0; Highlights u. a. : warnings(), um Warnungen anzuzeigen, und lazy loading. Wenn Sie beispielsweise data(mtcars) eintippen, sehen Sie, dass der Datensatz nicht sofort geladen, sondern als <Promise> zur Verfügung gestellt und erst bei konkretem Bedarf (etwa mit str(mtcars)) tatsächlich in den Arbeitsspeicher geladen wird.

2007: ggplot2

Am 10.6.2007 wurde ggplot2 veröffentlicht, eine Implementierung der Grammar of Graphics von Leland Wilkonson. Hadley Wickham hatte seit 2005 daran gearbeitet. Damals war noch nicht absehbar, welchen Einfluss dieses Paket auf Hadleys Leben und auf die R-Community haben würde. Der Erfolg brachte Hadley die Möglichkeit ein, sich vom akademischen Leben zu lösen und Vollzeit an R zu arbeiten. ggplot2 formte später einen wesentlichen Baustein des populären tidyverse.

ggplot2 und die Grammatik der grafischen Darstellung
ggplot2 Logo und Buchcover: The Grammar of Graphics, auf dem ggplot2 basiert.

Ebenfalls 2007 entstand rseek, um R-Inhalte leichter zu finden.

2009: R Journal für die Programmiersprache R

Seit 2009 ersetzt das R Journal die seit 2001 bestehenden R News, mit Themen wie Erweiterungspakete, Reviews, Vergleiche, Anwendungen.

2011: ROpenSci

2011 wurde ROpenSci gestartet. Hier ist eine sehr aktive Community entstanden, die R-Pakete für den wissenschaftlichen Einsatz entwickelt, mit etablierten Standards für Review-Prozesse, Best Practices für die Paketentwicklung und einer aktiv geförderten Willkommens- und Lernkultur. ROpenSci stellt Infrastruktur zur Verfügung wie das R-universe, das sich immer mehr als CRAN-Alternative etabliert und Menschen und Organisationen ermöglicht, Pakete weiterzuentwickeln, zu pflegen und anderen zugänglich zu machen, ohne einige Nachteile von CRAN (wie kurze Fristen für plötzlich nötige Änderungen, mit der Gefahr, dass Pakete von CRAN fliegen, wenn Fristen nicht eingehalten werden; oder Überlastung der CRAN-Maintainer).

Einige bekannte Köpfe der R-Community engagieren sich bei ROpenSci, darunter Noam Ross (u. a. Experte für GAMs, Generalized Additive Models), Karthik Ram (ROpenSci-Mitgründer, Program Officer bei The Navigation Fund), Jeroen Ooms (u. a. magick, Curl, jsonlite, openssl, webr, rwasm), Maëlle Salmon (empfehlenswerter Blog, siehe RBloggers), Jenny Bryan (Posit; von ihr stammt das legendäre Zitat: „Wenn Ihr R-Skript mit setwd(„C://Users/Jenny/Pfad/den/nur/ich/habe“) oder mit rm(list = ls()) beginnt, dann komme ich an ihren Schreibtisch und zünde Ihren Rechner an“).

2012: R-Ladies und Shiny!

2012 war ein prägendes Jahr für R: R-Ladies wurde von Gabriela de Queiroz gegründet. Den Einfluss dieser Initiative kann man kaum überschätzen – R-Ladies hat sehr viel für die Willkommenskultur in R getan und ist eine große Erfolgsgeschichte. Zur Zeit in 65 Ländern aktiv, mit 225 (!) Städtegruppen (Chapters genannt), über 3.900 Veranstaltungen! Ich durfte auch schon bei Online-Events präsentieren, siehe hier.

Shiny Logo

Ebenfalls ein echtes Highlight, das die Popularität von R sehr beflügelt und R noch mehr im Business-Kontext verankert hat: Shiny. Damit können R-Programmierer mit vergleichsweise wenig Code interaktive Webapplikationen erstellen, ohne HTML, CSS oder Javascript zu beherrschen.

2013: Programmiersprache R, Version 3.0 – 5.000 Pakete auf CRAN

Aus heutiger Sicht (aktuell über 20.000 Pakete auf CRAN) erscheint die Zahl 5.000 vielleicht gering. 2013 war es ein riesiger Meilenstein, der zeigt, wie dynamisch R durch die weltweite Entwicklergemeinschaft leistungsfähiger gemacht wurde.

Ebenfalls ins Jahr 2013 fällt die Veröffentlichung der R-Version 3.0, die volle Unterstützung für 64bit-Architekturen mit sich brachte.

2014: RMarkdown und dplyr

magrittr Pipe %>%

Auch 2014 war ein ereignisreiches Jahr für R, mit der Veröffentlichung von RMarkdown und dplyr – inklusive dem berühmten Pipe-Operator %>%, der über das magrittr-Paket eingebunden wird, in Ehrung des belgischen Surrealisten René Magritte.

2015: ggplot2 2.0

ggplot2 war 2015 schon längst etabliert und äußerst erfolgreich. Dennoch ist die Version 2.0 erwähnenswert: sie brachte einen neuen Mechanismus zur Erweiterbarkeit, der seither rege genutzt wurde. Die ggplot2 extensions gallery listet bereits über 130 Pakete, die ggplot2 ergänzen und noch leistungsfähiger machen. Da ist für (fast?) jedes Anliegen was dabei!

2016: tidyverse erleichtert Einstieg in Programmiersprache R

Auch wenn ggplot2 schon fast ein Jahrzehnt auf dem Buckel hatte und dplyr ebenfalls etabliert war: Das tidyverse im heutigen Sinne gab es bis 2016 noch nicht! Verschiedentlich wurde vom Hadleyverse gesprochen: R-Pakete, die von Hadley Wickham geschrieben oder initiiert wurden, die Datenanalyse sehr erleichtern und gut zusammenspielen. 2016 kam das Metapaket tidyverse, womit Hadleys Name etwas aus der Schusslinie genommen wurde (längst steht ein starkes Team hinter den Paketen); nun sind die Pakete auch bequem mit jeweils einem Befehl zu installieren und zu laden: install.packages(„tidyverse“) bzw. library(tidyverse). (Es gibt eine Unterscheidung zwischen dem „Kern-tidyverse“, das mit letztgenanntem Befehl geladen wird, und dem erweiterten tidyverse, das einige stärker spezialisierte Pakete enthält, die bei Bedarf separat zu laden sind. Beispiele: httr und rvest für Web-Scraping, googledrive, jsonlite, readxl.)

Ebenfalls 2016: RStudio Version 1.0.

2017: Über 10.000 Pakete auf CRAN

Nur 4 Jahre nach dem Überspringen der 5.000-Pakete-Marke auf CRAN (siehe oben) fiel bereits die 10.000 – ein weiteres Indiz für den Erfolg des R-Ökosystems.

2018: Tidy Tuesday

Seit 2018 gibt es den Tidy Tuesday. Jede Woche wird ein Datensatz freigegeben, auf den sich die R-Community stürzt. In bester Open-Source-Manier folgen zahlreiche Blogartikel und Social Media-Posts mit Visualisierungs- und Analyse-Ideen. In aller Regel wird auch der R-Code unter dem Hashtag #TidyTuesday zugänglich gemacht.

2020: Programmiersprache R 4.0, über 15.000 Pakete auf CRAN

2020 erschien R 4.0.0. Dabei wurde die berüchtigte Voreinstellung stringsAsFactors = TRUE (endlich!) auf FALSE geändert. data.frame() und read.table() (inklusive der Wrapper read.csv usw.) lesen Textvariablen nun nicht mehr automatisch als Factors, was über die Jahre zu unzähligen Frusterlebnissen geführt haben dürfte. Für mich hieß das: Ich musste mein Standard-Beispiel für Debugging mit R ändern 🙂

CRAN übersprang im Pandemie-Jahr die 15.000-Paket-Marke.

Das Unternehmen RStudio wurde in eine Public-Benefit-Corporation umgewandelt: ein Rechtsstatus, der die (gewinnorientierte und erfolgreiche) Firma auch auf das Gemeinwohl, d. h. das Wohl der R Community verpflichtet.

2021: Programmiersprache R, Version 4.1.0

Mit R-Version 4.1.0 kam der Base R Pipe Operator |> sowie ein Kürzel für anonyme Funktionen: \(x) statt function(x).

2022: Quarto und Posit

2022 wurde Quarto vorgestellt und RStudio benannte sich in Posit um.

Erste Shiny-in-Production-Konferenz in Newcastle-upon-Tyne, England.

2023: WebR – Programmiersprache R im Browser!

Es bleibt spannend und dynamisch in R. WebR erscheint: R wird in WebAssembly kompiliert – eine Sprache, die moderne Browser beherrschen. Das bringt fantastische Möglichkeiten mit sich: R-Code direkt im Browser ausführen, ohne server-basierte R-Installation! Noch gibt es einige Herausforderungen dabei, z. B. lange Startzeiten, da der Browser viel herunterladen und vorbereiten muss, bevor R-Code bzw. Apps im Browser auf Basis von WebAssembly / WebR laufen. Doch die Idee ist äußerst vielversprechend und einige helle Köpfe sind intensiv mit der Weiterentwicklung beschäftigt, z. B. Colin Fay von ThinkR.

Puh, viel passiert in diesen 30 Jahren. Der Artikel wurde länger als gedacht und auch etwas länger als die Vorlage, die mich inspiriert hat: siehe den englischsprachigen Blogeintrag bei Jumping Rivers.

In nächster Zeit wird es spannend sein zu beobachten, ob die neue IDE Positron RStudio verdrängen kann oder ob RStudio seine Position behauptet.

Was sind Eure Meilensteine, was sollte unbedingt ergänzt werden?

Viel Erfolg mit R! Gerne unterstütze ich Euch mit Workshops.
 

Freue mich über Kommentare!

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