Welche Konventionen zur Benennung von Variablen und Funktionen bevorzugen Sie im R-Code?
Soweit ich das beurteilen kann, gibt es verschiedene Konventionen, die alle in kakophoner Harmonie nebeneinander existieren:
1. Verwendung eines Periodentrenners, z
stock.prices <- c(12.01, 10.12)
col.names <- c('symbol','price')
Vorteile: Hat historische Vorrangstellung in der R-Community, die im gesamten R-Kern verbreitet ist und vom R Style Guide von Google empfohlen wird .
Nachteile: Reich an objektorientierten Konnotationen und verwirrend für R-Neulinge
2. Verwendung von Unterstrichen
stock_prices <- c(12.01, 10.12)
col_names <- c('symbol','price')
Vorteile: Eine gemeinsame Konvention in vielen Programmiergeschwindigkeiten; Von Hadley Wickhams Style Guide bevorzugt und in ggplot2- und plyr-Paketen verwendet.
Nachteile: Wird von R-Programmierern in der Vergangenheit nicht verwendet. ist in Emacs-Speaks-Statistics ärgerlicherweise dem Operator '<-' zugeordnet (änderbar mit 'ess-toggle-underscore').
3. Verwendung der gemischten Großschreibung (camelCase)
stockPrices <- c(12.01, 10.12)
colNames <- c('symbol','price')
Vorteile: Scheint eine breite Akzeptanz in mehreren Sprachgemeinschaften zu haben.
Nachteile: Hat einen aktuellen Präzedenzfall, wird aber historisch nicht verwendet (weder in der R-Basis noch in der Dokumentation).
Als ob es nicht verwirrend genug wäre, sollte ich schließlich darauf hinweisen, dass der Google Style Guide für die Punktnotation für Variablen, aber für die gemischte Großschreibung für Funktionen spricht.
Das Fehlen eines konsistenten Stils in allen R-Paketen ist auf mehreren Ebenen problematisch. Aus Entwicklersicht erschwert es das Verwalten und Erweitern des Codes anderer (insbesondere, wenn sein Stil nicht mit Ihrem eigenen übereinstimmt). Vom Standpunkt eines R-Benutzers aus steilert die inkonsistente Syntax die Lernkurve von R, indem sie die Art und Weise multipliziert, wie ein Konzept ausgedrückt werden kann (z. B. ist diese Datumsumwandlungsfunktion asDate (), as.date () oder as_date ()? Nein, es ist as. Datum()).
quelle
alllowercase
Variablennamen und viel gerade-aus-dem-Gleichung sehr kurzer Namen (x
,y
usw.).ImfDataTransformed
oder die natürliche erweiterte VersionIMFDataTransformed
nicht so einfach zu lesen wie mein bevorzugter TOGGLEcamelCase:IMFdataTransformed
...Antworten:
Gute vorherige Antworten, also nur ein wenig, um sie hier hinzuzufügen:
Unterstriche sind für ESS-Benutzer sehr ärgerlich. Angesichts der Tatsache, dass ESS ziemlich weit verbreitet ist, werden Sie im Code, der von ESS-Benutzern verfasst wurde, nicht viele Unterstriche sehen (und dieser Satz enthält eine Reihe von R Core- und CRAN-Autoren, ungeachtet von Ausnahmen wie Hadley).
Punkte sind auch böse, weil sie beim einfachen Versand von Methoden verwechselt werden können. Ich glaube, ich habe einmal Kommentare zu diesem Effekt auf einer der R-Listen gelesen: Punkte sind ein historisches Artefakt und werden nicht mehr empfohlen;
Wir haben also noch einen klaren Sieger in der letzten Runde: camelCase. Ich bin mir auch nicht sicher, ob ich der Behauptung, dass es in der R-Gemeinschaft keinen Präzedenzfall gibt, wirklich zustimme.
Und ja: Pragmatismus und Beständigkeit trumpfen Dogma. Was auch immer funktioniert und von Kollegen und Co-Autoren verwendet wird. Immerhin haben wir noch Leerzeichen und Klammern, über die wir streiten müssen :)
quelle
?make.names
scheinbar durch Punkte getrennte Namen bevorzugt werden.Ich habe eine Umfrage durchgeführt, welche Namenskonventionen, die tatsächlich für CRAN verwendet werden und im R Journal akzeptiert wurden :) Hier ist eine Grafik, die die Ergebnisse zusammenfasst:
Es stellt sich heraus (vielleicht keine Überraschungen), dass lowerCamelCase am häufigsten für Funktionsnamen und period.separated-Namen verwendet wurde, die am häufigsten für Parameter verwendet wurden. Verwendung von UpperCamelCase, wie im Google R Style Guide empfohlen ist jedoch sehr selten, und es ist etwas seltsam, dass sie die Verwendung dieser Namenskonvention befürworten.
Das vollständige Papier finden Sie hier:
http://journal.r-project.org/archive/2012-2/RJournal_2012-2_Baaaath.pdf
quelle
print
entspricht allen Konventionen außer UpperCamel und .OTHER_style.Unterstrichen den ganzen Weg! Entgegen der landläufigen Meinung gibt es in Basis R eine Reihe von Funktionen, die Unterstriche verwenden. Lauf
grep("^[^\\.]*$", apropos("_"), value = T)
, um sie alle zu sehen.Ich benutze den offiziellen Hadley- Codierungsstil;)
quelle
Ich mag camelCase, wenn das Kamel tatsächlich etwas Sinnvolles liefert - wie den Datentyp.
dfProfitLoss, wobei df = Datenrahmen
oder
vdfMergedFiles (), wobei die Funktion einen Vektor aufnimmt und einen Datenrahmen ausspuckt
Während ich denke, dass _ die Lesbarkeit wirklich verbessert, scheint es einfach zu viele Probleme bei der Verwendung von.-_ Oder anderen Zeichen in Namen zu geben. Vor allem, wenn Sie in mehreren Sprachen arbeiten.
quelle
Dies hängt von den persönlichen Vorlieben ab, aber ich folge dem Google Style Guide, da er mit dem Stil des Kernteams übereinstimmt. Ich habe noch keinen Unterstrich in einer Variablen in Basis R gesehen.
quelle
Wie ich hier erwähne:
Wie wirkt sich die Ausführlichkeit von Bezeichnern auf die Leistung eines Programmierers aus?
Denken Sie daran, wie verständlich Ihre Variablennamen für Ihre Mitarbeiter / Benutzer sind, wenn sie keine Muttersprachler sind ...
Aus diesem Grund würde ich sagen, dass Unterstriche und Punkte besser sind als Groß- und Kleinschreibung, aber wie Sie betonen, ist Konsistenz in Ihrem Skript unerlässlich.
quelle
Wie andere bereits erwähnt haben, werden Unterstriche viele Leute vermasseln. Nein, es ist nicht verboten, aber es ist auch nicht besonders häufig.
Die Verwendung von Punkten als Trennzeichen wird bei S3-Klassen und dergleichen etwas haarig.
Meiner Erfahrung nach bevorzugen viele der High Muckity Mucks von R die Verwendung von camelCase, mit etwas Punktverwendung und ein paar Unterstrichen.
quelle
Normalerweise benenne ich meine Variablen mit einem ix von Unterstrichen und einer gemischten Großschreibung (camelCase) um. Einfache Variablen benennen mit Unterstrichen, Beispiel:
PSOE_votes -> Anzahl der Stimmen für die PSOE (Fraktion Spaniens).
PSOE_states -> Categorical, gibt den Status an, in dem PSOE gewinnt {Aragon, Andalucia, ...)
PSOE_political_force -> Categorial, gibt die Position zwischen den Fraktionen der PSOE an (erste, zweite, dritte)
PSOE_07 -> Union von PSOE_votes + PSOE_states + PSOE_political_force bei 2007 (h eader -> Stimmen, Staaten, Position )
Wenn meine Variable das Ergebnis einer angewendeten Funktion in ein / zwei Variablen ist, verwende ich eine gemischte Großschreibung.
Beispiel:
positionXstates <- xtabs (~ Zustände + Position, PSOE_07)
quelle
Ich bevorzuge gemischte Hauptstädte.
Aber ich benutze oft Punkte, um anzugeben, was der Variablentyp ist:
mixCapitals.mat ist eine Matrix. mixCapitals.lm ist ein lineares Modell. mixCapitals.lst ist ein Listenobjekt.
und so weiter.
quelle