R für Dummies. Andrie de Vries
Beispiel mit
?print()
).
In R gibt es zwei grundlegend verschiedene Typen von Argumenten:
Argumente mit Standardwerten
Argumente ohne Standardwerte
Wenn ein Argument keinen Standardwert hat, kann es entweder erforderlich oder optional sein. Das erste Argument ist fast immer erforderlich. Probieren Sie mal Folgendes:
> print()
R beschwert sich, dass das Argument x
fehlt:
Fehler in print.default() : Argument "x" fehlt (ohne Standardwert)
Sie können den Namen des Arguments auch explizit übergeben:
> print(x = "Ist das nicht lustig?")
Na ja – lustig oder nicht –, es funktioniert jedenfalls. Aber warum kann man den Bezeichner, das x
, einfach weglassen, wie oben bereits mehrmals geschehen? Das liegt daran, dass R auf die Bezeichner verzichten kann, wenn Sie die Reihenfolge der Argumente (siehe Hilfe) genau einhalten. Die Funktion print()
hat nur ein erforderliches Argument, daher kann R hier auch nicht durcheinanderkommen. Was die Hilfeseiten noch an Informationen für Sie bereithalten, lesen Sie in Kapitel 11.
Wenn Sie die Argumente von Funktionen genau in der Reihenfolge übergeben, wie es in den Hilfeseiten steht, können Sie die Bezeichner weglassen. Umgekehrt können Sie die Reihenfolge beliebig wählen, wenn Sie alle Bezeichner mit angeben.
Probieren Sie mal folgendes Beispiel aus:
> print(digits = 4, x = 11/7)
[1] 1.571
Moment mal, von einem Argument namens digits
war in den Hilfeseiten über print()
doch nie die Rede! Hier ist die Lösung. Da hatte sich nicht print()
beschwert, sondern print.default()
. Offenbar ist für einfache »Hallo Welt!«-Argumente oder Zahlen die Funktion print.default()
zuständig. Rufen wir die Hilfeseite für print.default()
auf, ist die Welt wieder in Ordnung: Das Argument namens digits
wird beschrieben.
Die Funktion
print()
ist eine generische Funktion. Sie sieht sich zunächst den Typ des Objekts an, das als Argument übergeben wurde. Dann entscheidet sie, welche Funktion zur Ausführung der Aufgabe ausgewählt wird. Diese Funktion heißt Methode und ist Bestandteil des übergebenen Objekts. Mehrere Objekte können sich eine Methode teilen, wenn diese nicht mit einer speziellen, nur für das Objekt bestimmten Methode überschrieben wurde. Diese Methode nennt man Standardmethode (englisch default). In unserem Fall handelt es sich um die Methode print.default()
. Es gibt auch Objekte, für die R keine Standardmethode hat. Darüber lesen Sie mehr in Kapitel 8. Für den Moment genügt es, wenn Sie im Hinterkopf behalten, dass die benötigten Argumente für eine Funktion manchmal über mehrere Hilfeseiten verstreut sein können.
Wenn Sie vergessen haben, welche Argumente Sie für Ihre Funktion verwenden können, schauen Sie bitte auch auf die Hilfeseiten der für das gewünschte Argument zuständigen Methode. Meist finden Sie Hinweise zu zuständigen Methoden am Ende der Hilfeseite. Um die Hilfe der
paste()
-Funktion aufzurufen, tippen Sie ?paste
in Ihre Konsole.
Historienschreiber werden
Standardmäßig merkt sich R alle Anweisungen, die Sie während einer Sitzung ausführen lassen. Das kann sich als sehr nützlich erweisen, wenn Sie eine Anweisung noch mal ausführen wollen oder sich einen Überblick verschaffen möchten, was Sie bisher schon gemacht haben .
Sie können die Historie einsehen, wenn Sie in der Eingabezeile auf der Tastatur die Taste
-Taste ausführen lassen. R speichert die Anweisungshistorie mithilfe der Funktion savehistory()
. Standardmäßig wird die Historie in der Datei .Rhistory
(mit Punkt) im aktuellen Arbeitsverzeichnis abgelegt. Wenn Sie R das nächste Mal starten, wird diese Datei automatisch wieder eingelesen und steht zur Verfügung.
Wenn Sie einen anderen Namen für die Historie wünschen, verwenden Sie das Argument file
der Funktion, etwa so:
> savehistory(file = "Kapitel3.Rhistory")
Denken Sie immer an die Anführungszeichen beim Dateinamen.
Sie können ein Fenster im Windows-Explorer öffnen und sich die Historie ansehen. Sie ist eine Textdatei, die Sie mit jedem einfachen Editor, wie zum Beispiel Notepad, öffnen können.
Die Dateierweiterung .Rhistory
ist nicht zwingend. Genau genommen ist R ziemlich egal, welche Erweiterungen Sie verwenden. Dennoch haben Sie es leichter, Historiendateien zu erkennen, wenn Sie deren Namen mit .Rhistory
enden lassen.
Zum Laden einer Historiendatei verwenden Sie die Funktion loadhistory()
. Damit ersetzen Sie die aktuelle Anweisungshistorie durch die Datei .Rhistory
aus dem Arbeitsverzeichnis. Wenn Sie eine andere Historie laden wollen, verwenden Sie wieder das Argument file
:
loadhistory("Kapitel3.Rhistory")
Lesbaren Code verfassen
Sie fragen sich vielleicht, warum Sie sich um die Lesbarkeit von Code kümmern sollten. Sie haben ihn doch geschrieben, also wissen Sie auch, was drinsteht, oder? Das stimmt zwar, aber wissen Sie es auch noch in sechs Monaten? Vielleicht entwickeln Sie ja auch im Team, und was Ihnen völlig klar ist, stellt die anderen möglicherweise vor Rätsel über Rätsel.
Im Gegensatz zu manchen anderen Programmiersprachen zwingt R Sie nicht, die folgenden Regeln einzuhalten. Dennoch hoffen wir, dass wir Sie davon überzeugen können, sich daran zu halten – obwohl Ihr Code trotzdem laufen würde.
Namenskonventionen einhalten
R ist ziemlich liberal bei der Benennung von Objekten und Funktionen. Dies ist Fluch und Segen zugleich. Niemand muss festen Regeln folgen. Wenn also jemand etwas programmiert, kann er das im Wesentlichen nach Belieben tun .
Einen zulässigen Namen wählen
Obwohl fast alles in R erlaubt ist, gibt es dennoch ein paar Regeln, die Sie bei der Vergabe von Namen für Objekte nicht umgehen können.
Namen fangen mit einem Buchstaben oder einem Punkt an. Wenn sie mit einem Punkt anfangen, darf an zweiter Stelle keine Ziffer stehen.
Namen sollten ausschließlich aus Buchstaben, Zahlen, Unterstrichen (_) und Punkten (.) bestehen. Obwohl Sie R zwingen können,