Ein kurzer Blick auf Klassen in R

von Karl-Kuno Kunze

Dieser Arikel gibt einen sehr kurzen Einblick in die Mechanismen, wie Klassen in R erzeugt und verwaltet werden und zeigt eine mögliche Falle in R auf.  Der gerade Weg zur Klasse ist

  • nicht der einzige
  • nicht immer der richtige.

Mechanismus 1

In den meisten Fällen wird die Zugehörigkeit zu einer Klasse durch ein Attribut mit dem passenden Namen ‚class‘. Insofern sind die folgenden drei Ausdrücke äquivalent:

Das lässt sich leicht mit den Anweisungen attributes() und identical() überprüfen:

Wir können die Klasse entweder durch eine Casting Funktion, die Anweisung unclass() oder, indem wir das Attribut ‚class‘ auf NULL setzen, wieder entfernen:

Jetzt sind alle drei Elemente wieder einfache Vektoren mit Länge 1.

Mechanismus 2

Schauen wir uns Matrizen an:

Wie sieht es jedoch damit aus? Obwohl wir unclass() verwendet haben, erinnert sich das Objekt an seine Klasse ‚matrix‘.

Schauen wir uns deshalb die Attribute etwas genauer an:

Es gibt gar kein Attribut ‚class‘! Vielmehr gibt es ein Attribut mit dem Namen ‚dim‘. Spielen wir also damit etwas herum. Zunächst reißen wir das Attribut ( wie einen Kofferanhänger) einfach ab:

Jetzt hängen wir es wieder an:

Das Attribut ‚class‘ ist also nicht das einzige Attribut, mit dem man schlussendlich eine Klasse festlegen kann. Gehen wir sogar noch einen Schritt weiter und definieren einfach mal ein Attribut ‚class‘ für das Objekt und setzten auf den Wert ‚Date‘:

Jetzt wird das Objekt wie ein Element der Klasse Date behandelt. Wenn es also ein Attribut ‚class‘ gibt, überschreibt es etwaige darunterliegende implizite Klassen.

________________________________________________________________________________________________

Sie sind an weiteren Tipps über die Programmiersprache R interessiert? Tragen Sie sich in unseren Newsletter ein und bleiben Sie auf dem Laufenden.

Interesse an einem Seminar beim Autor Karl-Kuno Kunze? Hier gelangen Sie zu unseren Trainings in Potsdam. Optional auch in Ihrem Unternehmen vor Ort. Sprechen Sie uns an!