Tutorials zur objektorientierten Programmierung in R [geschlossen]

15

Gibt es gute Tutorials zur objektorientierten Programmierung in R?

Es wäre großartig, wenn es Folgendes beinhalten würde:

  • wie man eine Klasse definiert;
  • Unterschiede zwischen den Klassen S3 und S4;
  • Überladen von Operatoren (Ich würde gerne schreiben können, a+bwo aund in welchen bKlassen ich mich befinde).
NPE
quelle

Antworten:

10

Hadley Wickhams Wiki zu Devtools ist eine großartige Ressource für die notwendigen Informationen in kompakter Form. Wenn Sie jedoch eine umfassende Ressource benötigen, kann der OOP- Abschnitt des R-Sprachhandbuchs hilfreich sein. Ich bin sicher, dass erfahrenere Mitglieder bessere Vorschläge haben werden.

suncoolsu
quelle
4

Hadley Wickhams " Advanced R " hat einige sehr gute Intro und Referenzen. Ich repliziere diesen Abschnitt zur besseren Indizierung.

Ein System auswählen

Drei OO-Systeme sind viel für eine Sprache, aber für die meisten R-Programme reicht S3 aus. In R erstellen Sie normalerweise relativ einfache Objekte und Methoden für bereits vorhandene generische Funktionen wie print (), summary () und plot (). S3 ist für diese Aufgabe gut geeignet, und der größte Teil des OO-Codes, den ich in R geschrieben habe, ist S3. S3 ist ein bisschen schrullig, aber es erledigt die Arbeit mit einem Minimum an Code.

Wenn Sie kompliziertere Systeme miteinander verbundener Objekte erstellen, ist S4 möglicherweise geeigneter. Ein gutes Beispiel ist das Matrix-Paket von Douglas Bates und Martin Maechler. Es wurde entwickelt, um viele verschiedene Arten von dünnen Matrizen effizient zu speichern und zu berechnen. Ab Version 1.1.3 werden 102 Klassen und 20 generische Funktionen definiert. Das Paket ist gut geschrieben und kommentiert, und die beiliegende Vignette (Vignette ("Intro2Matrix", package = "Matrix")) gibt einen guten Überblick über die Struktur des Pakets. S4 wird auch in großem Umfang von Bioconductor-Paketen verwendet, die komplizierte Wechselbeziehungen zwischen biologischen Objekten modellieren müssen. Bio-Leiter bietet viele gute Ressourcen zum Lernen von S4. Wenn Sie S3 beherrschen, ist S4 relativ einfach zu erlernen. die ideen sind alle gleich,

Wenn Sie in einer OO-Standardsprache programmiert haben, erscheint RC sehr natürlich. Aber weil sie durch einen veränderlichen Zustand Nebenwirkungen hervorrufen können, sind sie schwerer zu verstehen. Wenn Sie beispielsweise in R normalerweise f (a, b) aufrufen, können Sie davon ausgehen, dass a und b nicht geändert werden. Wenn jedoch a und b RC-Objekte sind, können sie an dieser Stelle geändert werden. Wenn Sie RC-Objekte verwenden, möchten Sie Nebenwirkungen im Allgemeinen so weit wie möglich minimieren und sie nur dort verwenden, wo veränderbare Zustände unbedingt erforderlich sind. Die meisten Funktionen sollten weiterhin „funktionsfähig“ und frei von Nebenwirkungen sein. Dies macht den Code verständlicher und für andere R-Programmierer verständlicher.

Er verweist auf " Ein praktisches Tutorial zur S4-Programmierung ".

Es gibt eine Reihe weiterer interessanter Ressourcen, wenn Sie seinen Hinweisen folgen.

John M. Chambers sagt in "Objektorientierte Programmierung, funktionale Programmierung und R" :

R wurde auch stark von den Ideen der funktionalen Programmierung und insbesondere von dem Wunsch beeinflusst, funktionale mit objektorientierter Programmierung zu kombinieren

Fügen Sie etwas hinzu, das nicht direkt mit der Frage zusammenhängt, sondern mit derselben Idee: "DataFrames in Spark for Large Scale Data Science" . Da dies Scala und R näher bringt, könnte sich daraus eine große OO / funktionale Synergie ergeben.

SemanticBeeng
quelle