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 fileder 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 .Rhistoryist 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 .Rhistoryenden lassen.
Zum Laden einer Historiendatei verwenden Sie die Funktion loadhistory(). Damit ersetzen Sie die aktuelle Anweisungshistorie durch die Datei .Rhistoryaus 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 nachnameund Nachnameunterschiedliche 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 xoder yzu 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, data2und 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 xoder data1gemeint 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 pastenennen? 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 pasteoder 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 Foder Tals Objektname vergeben. Es geht, aber sehr wahrscheinlich werden Sie damit Schiffbruch erleiden. Obwohl es schlechter Stil ist, werden häufig Fund Tals Abkürzungen für FALSEund TRUEverwendet, das versteht R auch. Gleichzeitig sind Fund Tkeine reservierten Wörter. R sucht zunächst nach Objekten dieses Namens, und erst, wenn das nicht klappt, löst es die Abkürzung mit FALSEoder TRUEauf. Wenn Sie jetzt Code haben, der erwartet, dass Tauch wirklich TRUEbedeutet, 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 Fund Tnoch 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 superLangerVariablenNameauf 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().
Читать дальше