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")
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, auch andere Zeichen zu akzeptieren, könnte das unangenehme Folgen haben. Andere Zeichen haben nämlich häufig eine spezielle Bedeutung in R.
Folgende Schlüsselwörter sind als Namen verboten:breakelseFALSEforfunctionifInfNANaNNextNULLrepeatreturnTRUEwhile
R beachtet die Groß- und Kleinschreibung. Für R sind also nachname
und Nachname
unterschiedliche Objekte. Es kann vorkommen, dass R ein Objekt nicht findet, obwohl Sie Stein und Bein schwören, es erzeugt zu haben. In so einem Fall ist die Erinnerung an Groß-/Kleinschreibung Gold wert.
Einen klaren Namen wählen
Wenn Sie programmieren, dann sind Sie vermutlich immer versucht, kurze, generische Namen wie x
oder y
zu verwenden. Daran ist prinzipiell nichts auszusetzen, allerdings sollte immer klar sein, wofür der Name selbst steht. Das kann gerade bei größeren Projekten oder Projekten, die Sie nach längerer Zeit beispielsweise erweitern wollen, schnell zu Verwirrung führen. Genauso kann es anderen Leuten die Lesbarkeit Ihres Codes erheblich erschweren, wenn Sie Ihre Datensätze nur mit data1
, data2
und so weiter bezeichnen, ganz gleich, ob es für Sie selbst in dem Moment, als Sie Ihr R-Programm geschrieben haben, Sinn ergeben hat. Denken Sie immer daran: Sie könnten derjenige sein, der in drei Monaten rausfinden muss, was mit x
oder data1
gemeint war! Beschreibende Namen sind da eine große Hilfe.
Obwohl Sie Ihre Objekte nennen können, wie Sie wollen, sind doch manche Namen weniger verwirrend als andere. Zum Beispiel ist Ihnen womöglich aufgefallen, dass keine der bisher verwendeten Funktionen auf der Liste der verbotenen Namen etwas weiter oben auftaucht. Das können Sie wörtlich nehmen: Wollen Sie Ihr Objekt paste
nennen? Bitte sehr:
> paste <- paste("Das ist ja ", "verwirrend!")
> paste
[1] "Das ist ja verwirrend!"
> paste("Finden","Sie nicht?")
[1] "Finden Sie nicht?"
Für R ist es kein Problem, herauszufinden, ob Sie gerade Ihren Vektor paste
oder die Funktion paste()
aufrufen wollen. Jedoch ist es möglicherweise keine gute Idee, diesen Namen zu vergeben. Obwohl es also streng genommen nicht verboten ist, vergeben Sie am besten nie Funktionsnamen für Ihre Variablen.
Richtig in Schwierigkeiten können Sie kommen, wenn Sie F
oder T
als Objektname vergeben. Es geht, aber sehr wahrscheinlich werden Sie damit Schiffbruch erleiden. Obwohl es schlechter Stil ist, werden häufig F
und T
als Abkürzungen für FALSE
und TRUE
verwendet, das versteht R auch. Gleichzeitig sind F
und T
keine reservierten Wörter. R sucht zunächst nach Objekten dieses Namens, und erst, wenn das nicht klappt, löst es die Abkürzung mit FALSE
oder TRUE
auf. Wenn Sie jetzt Code haben, der erwartet, dass T
auch wirklich TRUE
bedeutet, könnte es eng werden. Erschwerend kommt hinzu, dass R Ihnen davon möglicherweise noch nicht einmal etwas mitteilt. Der Code kann durchaus noch zulässig sein. Er tut jedoch nicht mehr, was Sie erwarten. Um auf der sicheren Seite zu sein, nutzen Sie also weder die Abkürzungen F
und T
noch verwenden sie als Namen für Objekte.
Die Struktur für Namen wählen
Wenn Sie bereits Erfahrung mit Programmierung haben, kennen Sie vielleicht die camelCase-Notation (im Deutschen korrekt, jedoch etwas weniger anschaulich: Binnenversalien ). Mit ihr kann man längere Objektnamen strukturieren. Indem Sie jedes neue Wort im Namen mit einem Großbuchstaben anfangen lassen, erleichtern Sie das Lesen. So lässt sich auch ein superLangerVariablenName
auf einen Blick leicht erfassen.
Alternativ können Sie auch super.langer.variablen.name
schreiben. Das ist in R möglich, weil R den Punktoperator ( .
) nicht kennt. Dies nennt man dotted style (von englisch dot = Punkt). R benutzt selbst den dotted style für viele Funktionsnamen. Ein solcher Name ist uns bereits in diesem Kapitel begegnet: print.default()
. In manchen Paketen begegnet Ihnen auch ein Unterstrich anstelle des Punkts.
Die Funktion print.default()
ist die Standardmethode für die Funktion print()
. Informationen zu den Argumenten von print()
finden Sie auf der Hilfeseite von print.default()
.
Читать дальше