Hallo.
Ich habe eine Frage bezüglich "clean code" in R.
Gibt es sowas für R überhaupt?
Welche "Regeln" sollte man aufjedenfall beachten um seinen Code so sauber wie möglich zu halten?
Ich lese momentan das Buch "R für Dummies" von Andrie de Vries und Joris Meys.
Dort wurde zwar clean code angesprochen jedoch keine Vorgaben dazu gemacht.
Ich habe mir diese Frage gestellt da ich bei verschiedenen Übungsaufgaben verschiedene Arten der Problemlösung gefunden habe.
So werden Variablen oft auch mit "=" anstatt "<-" definiert.
Dataframes werden mit "row.names" und vordefinierten Vektoren erstellt, andere benutzen z.B. "data.frame("Alter"=c(14,16,21,18))"
etc.
Ich habe die Suchfunktion mit den Begriffen "Clean code" und "sauberer code" verwendet, jedoch nichts gefunden.
Ich bedanke mich für die zukünftigen Antworten.
R - "Clean Code"?
Re: R - "Clean Code"?
Tut mir leid, ich hab da bislang noch nicht so viel Ehrgeiz rein investiert - wenn es läuft, ist es für mich oft schon ausreichend. Als Einzelkämpfer bin ich bislang noch nicht in der Situation gewesen, R Code so schreiben zu müssen, dass es jemand anderes versteht. Meinen eigenen Murks kann ich dank ein paar Kommentaren meistens doch noch nachvollziehen...
Ich fand als Lektüre zu den Dos and Donts beim Schreiben von R-Code aber das R-Inferno von Patrick Burns ganz hilfreich.
VG
Matthias
Ich fand als Lektüre zu den Dos and Donts beim Schreiben von R-Code aber das R-Inferno von Patrick Burns ganz hilfreich.
VG
Matthias
Re: R - "Clean Code"?
Ich richte mich nach https://style.tidyverse.org
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Re: R - "Clean Code"?
Da habe ich vor längerer Zeit mal einen Blogpost gelesen, den ich auf die schnelle nicht finde. Dort hatte man den R style guide von tidyverse mit dem von Google verglichen und -und das fand ich klasse- mit dem tatsächlich auf github geposteten Code verglichen. Im Ergebnis kam heraus, dass es eine ganze Reihe von Style Guides gibt, dass die genannten berühmten aber nicht die Praxis der R'ler widerspiegelt.
Man schaue auch hier für weitere Style guides: http://jef.works/R-style-guide/ unter der Überschrift "References and Resources".
LG,
Bernhard
Man schaue auch hier für weitere Style guides: http://jef.works/R-style-guide/ unter der Überschrift "References and Resources".
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: R - "Clean Code"?
Wenn man erstmal erkannt hat (vielleicht durch leidvolle Erfahrungen), dass es doch einen Zusammenhang gibt zwischen dem Schreiben von funktionierendem Code und dem Schreiben von lesbarem Code, dann ist das Interesse an einem guten (oder gar "besten" Stil) geweckt. Verschiedene Styleguides zeigen grob gesehen alle in die gleiche Richtung, geben aber im Detail verschiedene Empfehlungen. Solche Empfehlungen sind gut und richtig und nach deren Lektüre hat man wieder einen anderen Blich auf eigene und fremde Quelltexte.
Meine Meinung dazu ist, dass man solche Styleguides nicht als Dogma nehmen muss, sondern dass man den eigenen Code auch bezüglich der Lesbarkeit selbstkritisch betrachtet (möglichst einige Wochen später). Der Rest kommt dann mit der Erfahrung und Übung.
Zumindest könnte ich für die Stellen des Codes, an denen ich von meinem üblichen Stil abweiche, eine Begründung abgeben, warum ich das an der Stelle tue. - So eine Begründung ist dabei keinesfalls allgemeingültig sondern sehr subjektiv.
Gruß, Jörg
(Programmieren seit 1981)
Meine Meinung dazu ist, dass man solche Styleguides nicht als Dogma nehmen muss, sondern dass man den eigenen Code auch bezüglich der Lesbarkeit selbstkritisch betrachtet (möglichst einige Wochen später). Der Rest kommt dann mit der Erfahrung und Übung.
Zumindest könnte ich für die Stellen des Codes, an denen ich von meinem üblichen Stil abweiche, eine Begründung abgeben, warum ich das an der Stelle tue. - So eine Begründung ist dabei keinesfalls allgemeingültig sondern sehr subjektiv.
Gruß, Jörg
(Programmieren seit 1981)
Re: R - "Clean Code"?
Es gibt einige Regeln, die für alle Sprachen gleichermaßen gelten. Zum Beispiel, dass man lieber viele kleine Funktionen schreibt, deren Richtigkeit sich besser überblicken lässt als ein langes Listing. Zum Beispiel, dass Variablennamen sprechen sollten (dazu müssen sie nicht lang sein, aber ein 'i' ist in der Regel eine Schleifenvariable und ein 'n' ist normalerweise ganzzahlig, ein 'x' ist eher nicht ganzzahlig). Kommentare sind nützlich, wenn es nicht zuviele sind. Das hier ist sicher ein schlechtes Beispiel:Welche "Regeln" sollte man aufjedenfall beachten um seinen Code so sauber wie möglich zu halten?
Code: Alles auswählen
x <- 1 # x auf 1 setzen
Im Forum tauchen immer mal wieder Konstruktionen auf, in denen Variablennamen durchnummeriert werden. Die heißen dann datum1, datum2, datum3, datum4, datum5,..., datum312. Und in der Folge wird dann gefragt, wie man auf solche Konstruktionen in einer Schleife zugreifen kann. Wenn sowas passiert, dann wäre fast immer eine Liste von Variablen (oder ein Vektor von Werten) der viel bessere Ansatz gewesen. Vielleicht ist das eine gute Empfehlung: Nutze Listen und Vektoren, um Dinge zusammenzufassen.
Ich mache das für mich einheitlich und würde jedem Anfänger empfehlen, es einheitlich zu machen. Dann wiederum ist es mir völlig egal, welches von beidem man nimmt. Mir hat sich nie erschlossen, warum man Variablen mit '<-' zuweist, Argumente aber mit '=' zuweist. AlsoSo werden Variablen oft auch mit "=" anstatt "<-" definiert
Code: Alles auswählen
> a <- mean(x=5, na.rm=TRUE) # so wird es gemacht
> a <- mean(x<-5, na.rm<-TRUE) # das versteht R nicht und ein Fehler wird nur geworfen, wenn man Glück hat.
Error in mean.default(x <- 5, na.rm <- TRUE) :
'trim' muss nummerisch sein und Länge 1 haben
Vektorwertige Datenverarbeitung ist nicht nur schneller als Schleifen, oft ist sie auch kürzer, deshalb lesbarer und Fehler leichter zu entdecken. Von anderen Sprachen kommende Anfänger basteln gerne sowas
Code: Alles auswählen
a <- 1:10
b <- numeric(0)
for(i in length(a)){
b[i] <- a[i]*3
}
HTH,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte