Zusammengesetzte Datentypen in R

Inhalt und Lernziele des Kapitels Zusammengesetzte Datentypen in R.
Noch keine Stimmen abgegeben
Noch keine Kommentare

Einordnung des Artikels

Einf├╝hrung

Im letzten Kapitel wurden die elementaren Datentypen von R vorgestellt. Dort wurde ein etwas irref├╝hrender Eindruck ├╝ber den Zusammenhang zwischen den elementaren und den zusammengesetzten Datentypen vermittelt. N├Ąmlich dass - wie in fast allen Programmiersprachen - einige fundamentale Datentypen (wie logische Werte, ganze Zahlen, Gleitkommazahlen, Zeichen) existieren, die dann zu Vektoren oder Feldern zusammengesetzt werden k├Ânnen.

Richtig ist hingegen, dass es in R keine atomaren Datentypen gibt, sondern dass die bisher vorgestellten Datentypen (numeric mode, logical mode, character) intern immer als Vektoren behandelt werden. Und wenn dem Programmierer ein atomarer Datentyp suggeriert wird, handelt es sich um einen Vektor der L├Ąnge 1.

Erstes Ziel dieses Kapitels ist es daher die zusammengesetzten Datentypen von R vorzustellen und ihren Zusammenhang mit den scheinbar atomaren Datentypen zu erkl├Ąren.

Das zweite Ziel ist es, den Umgang mit diesen zusammengesetzten Datentypen einzu├╝ben. Dazu geh├Ârt:

  • die Funktionen kennenzulernen, mit denen Variablen von zusammengesetztem Datentyp initialisiert werden,
  • die Diagnose-Funktionen f├╝r die jeweiligen Datentypen kennenlernen,
  • die vordefinierten Operatoren kennenzulernen, mit denen diese Variablen verkn├╝pft werden k├Ânnen, sowie
  • die vordefinierten Funktionen f├╝r zusammengesetzte Datentypen kennenzulernen.

Eine Schwierigkeit dabei kann dadurch entstehen, dass in R manche Begriffe (wie Vektor oder Liste) anders verwendet werden als in anderen Programmiersprachen ÔÇô es wird also zu kl├Ąren sein, wie die Bezeichnungen der zusammengesetzten Datentypen in R lauten.

├ťbersicht ├╝ber zusammengesetzte Datentypen in R

Die folgende Tabelle zeigt nochmals die atomaren Datentypen, die bereits besprochen wurden. Angegeben wird jeweils der Speicher-Modus, der Modus und der Wertebereich.

Speicher-Modus Modus Wertebereich
"logical" "logical" Wahrheitswert (TRUE, FALSE)
"integer" "numeric" ganze Zahlen
"double" "numeric" Gleitkommazahlen
"character" "character" Zeichen

In Abbildung 1, die bereits in ├ťbersicht ├╝ber Datentypen in R gezeigt und diskutiert wurde, ist zu sehen, dass jedes R-Objekt durch seine Struktur und L├Ąnge charakterisiert ist; zus├Ątzlich k├Ânnen Attribute gesetzt sein.

Abbildung 1: Ein Objekt in R wird charakterisiert durch seine Struktur, die L├Ąnge und eventuell durch weitere Attribute.Abbildung 1: Ein Objekt in R wird charakterisiert durch seine Struktur, die L├Ąnge und eventuell durch weitere Attribute.

Atomare Struktur bedeutet, dass ein Objekt aus Komponenten zusammengesetzt ist, die alle einen identischen Speicher-Modus besitzen (Paradebeispiel ist ein Vektor von Gleitkommazahlen).

Rekursive Struktur hei├čt, dass die Komponenten einen beliebigen Speicher-Modus besitzen k├Ânnen, insbesondere selber wieder von rekursiver Struktur sein k├Ânnen. Paradebeispiel ist hier eine Liste, die aus mehreren Vektoren besteht. M├Âglich ist aber auch eine Liste von Listen.

Die folgende Tabelle zeigt die atomaren Strukturen aus den Basis-Paketen:

Datentyp Beschreibung
vector Indizierte Komponenten von identischem Datentyp und gegebener L├Ąnge
matrix Interpretation eines Vektors als zweidimensionale Matrix; die L├Ąnge des Vektors muss mit dem Produkt von Zeilen- und Spaltenanzahl ├╝bereinstimmen. Spezialfall von array.
array Interpretation eines Vektors als mehrdimensionales Feld (Matrix im Fall von 2 Dimensionen)
factor Einteilung von Daten (meist gegeben als Vektor) in Kategorien (levels)
ordered Faktor f├╝r Kategorien, die angeordnet werden k├Ânnen
table Zu einem oder mehreren Faktoren kann eine Kontingenztabelle erzeugt werden. Sie besteht aus einem integer-array. Damit das Feld leichter weiterverarbeitet werden kann (zum Beispiel indem es zu einem data frame verwandelt werden kann, aus dem leichter die Kategorien des Faktors abzulesen sind), gibt es den eigenen Datentyp table.

Die folgende Tabelle zeigt die beiden wichtigsten rekursiven Strukturen aus den Basis-Paketen:

Datentyp Beschreibung
list Wie Vektoren mit dem Unterschied, dass jede Komponenten einen beliebigen Datentyp haben kann (insbesondere ist auch eine rekursive Struktur erlaubt - also zum Beispiel Listen von Listen).
data frame Vereint die Eigenschaften von Liste und Matrix: Jede Komponente eines Data Frame ist ein Vektor, der einen beliebigen Modus haben kann, aber die L├Ąngen der Vektoren m├╝ssen ├╝bereinstimmen.

Empfohlene Vorgehensweise

Die Beschreibung der einzelnen Datentypen in den folgende Kapiteln ist zu umfangreich, um sie beim ersten Durchgang vollst├Ąndig durchzuarbeiten. Hier soll eine Vorgehensweise empfohlen werden, wie man mit dem gezeigten Material umgehen soll.

Der Aufbau der einzelnen Abschnitte ist immer ├Ąhnlich:

  1. Es werden diejenigen Funktionen gezeigt, mit denen eine Variable des entsprechenden Datentyps erzeugt werden kann.
  2. Es wird gezeigt, wie man auf die Komponenten eines zusammengesetzten Objektes zugreift.
  3. Die Diagnose-Funktionen f├╝r den Datentyp werden vorgestellt.
  4. Weitere Anwendungen des Datentyps werden gezeigt, die auf Funktionen aus den Basis-Paketen zur├╝ckgreifen.
  5. (Wer in der Dokumentation st├Âbert, wird schnell bemerken, dass es noch eine Vielzahl weiterer Funktionen gibt, die hier nicht besprochen werden.)

Da Vektor und Liste die grundlegenden Vertreter f├╝r atomare beziehungsweise rekursive Strukturen sind, m├╝ssen deren Eigenschaften unbedingt verstanden werden, um mit R arbeiten zu k├Ânnen. Das Erzeugen von Variablen, der Zugriff auf die Komponenten und die Diagnose-Funktionen sind dann f├╝r andere zusammengesetzte Datentypen ganz ├Ąhnlich realisiert.

Und insbesondere der recycling-Mechanismus, der bei der Verarbeitung von Vektoren angewendet wird, ist f├╝r Einsteiger sehr gew├Âhnungsbed├╝rftig und kann zu zahlreichen Fehlern oder unerw├╝nschten Ergebnissen f├╝hren. Die zun├Ąchst befremdlichen Eigenschaften des recycling-Mechanismus sollte man m├Âglichst fr├╝h kennenlernen.

Dagegen k├Ânnen die Anwendungen in einem ersten Durchgang lediglich ├╝berflogen und zur Kenntnis genommen werden. Erst wenn man eigene Anwendungen schreibt, wird man darauf zur├╝ckkommen. Aber dann ist es wichtig, einen Eindruck davon zu besitzen, welche Funktionen in den R-Basis-Paketen vorbereitet sind und wie man sie einsetzt. Ohne diesen ├ťberblick wird man viel unn├Âtige Arbeit investieren, um derartige Funktionen selber zu implementieren.

Bei den weiteren Datentypen kann man sich ein wenig danach richten, mit welcher Absicht man R erlernen m├Âchte; hier einige Anhaltspunkte:

  • Wer h├Âhere Mathematik betreiben m├Âchte, wird Matrizen sorgf├Ąltig studieren m├╝ssen, da viele Berechnungen auf Operationen mit Matrizen heruntergebrochen werden k├Ânnen.
  • Felder (array) sind dann lediglich die mehrdimensionale Verallgemeinerung von Matrizen.
  • Wer mehr an Statistik interessiert ist, wird an den Datentypen Dataframe und Faktor nicht vorbeikommen, da sie zahlreiche Funktionen bereitstellen, wie man Daten speichert, verarbeitet und insbesondere klassifiziert.
  • Speziell mit Tabellen lassen sich dann Kontingenztabellen erstellen.
  • Soll dagegen R als erste Programmiersprache erlernt werden und weniger unter dem Aspekt mathematischer oder statistischer Anwendungen, sollte man von den zusammengesetzten Datentypen zun├Ąchst lediglich die wichtigsten Eigenschaften von Vektoren und Listen verstehen und m├Âglichst schnell zu den Kontrollstrukturen und Funktionen ├╝bergehen. Andere zusammengesetzte Datentypen und spezielle Anwendungen k├Ânnen dann auch sp├Ąter durchgearbeitet werden.

F├╝r Lehrende, die diesen Kurs als Begleitlekt├╝re einsetzen, wird empfohlen, den Studenten einen Fahrplan durch die zusammengesetzten Datentypen zusammenzustellen; dieser sollte angeben, welche Abschnitte in welcher Reihenfolge und mit welcher Priorit├Ąt durchzuarbeiten sind.

Da in R Attribute eingesetzt werden, um Datentypen mit weiteren Informationen auszustatten, wird man auch irgendwann verstehen m├╝ssen, wie Attribute gesetzt, ver├Ąndert und abgefragt werden; einige Attribute werden sogar intern gesetzt. Im Kapitel ├╝ber Vektoren und besonders ausf├╝hrlich ├╝ber Matrizen werden die Eigenschaften von Attributen erkl├Ąrt.

Ausf├╝hrliches Inhaltsverzeichnis

  1. Vektoren in R: der Datentyp vector
  2. Vektoren in R: Anwendungen
  3. Matrizen in R: der Datentyp matrix
  4. Matrizen in R: Anwendungen
  5. Felder in R: der Datentyp array
  6. Listen in R: der Datentyp list
  7. Listen in R: Anwendungen
  8. Dataframes in R: der Datentyp data frame
  9. Dataframes in R: Anwendungen
  10. Faktoren in R: der Datentyp factor
  11. Faktoren in R: Anwendungen
  12. Tabellen in R: der Datentyp table