35 Stimmen

Gibt es einen technischen Unterschied zwischen "=" und "<-"?

Ich habe mich gefragt, ob es einen technischen Unterschied zwischen den Zuweisungsoperatoren gibt "=" y "<-" in R. Macht es also einen Unterschied, wenn ich:

Beispiel 1: a = 1 o a <- 1

Beispiel 2: a = c(1:20) o a <- c(1:20)

Vielen Dank für Ihre Hilfe

Sven

46voto

Sacha Epskamp Punkte 44955

Ja, die gibt es. Das steht auf der Hilfeseite von '=' sagt:

Die Operatoren <- und = weisen in die Umgebung, in der sie sich befinden ausgewertet werden. Der Operator <- kann überall verwendet werden überall verwendet werden, während der Operator = nur auf der obersten Ebene erlaubt ist (z. B, in dem vollständigen Ausdruck, der bei der Eingabe von der Eingabeaufforderung) oder als einer der Unterausdrücken in einer geschweiften Liste von Ausdrücken.

Mit "kann verwendet werden" meint die Hilfedatei hier die Zuweisung eines Objekts. In einem Funktionsaufruf kann man ein Objekt nicht mit = denn = bedeutet, dass dort Argumente zugewiesen werden.

Grundsätzlich gilt: Wenn Sie <- dann weisen Sie eine Variable zu, die Sie in Ihrer aktuellen Umgebung verwenden können. Nehmen wir zum Beispiel:

matrix(1,nrow=2)

Dies ergibt einfach eine 2-zeilige Matrix. Betrachten Sie nun:

matrix(1,nrow<-2)

Damit erhalten Sie ebenfalls eine zweizeilige Matrix, aber jetzt haben wir auch ein Objekt namens nrow die zu 2 ausgewertet wird! Was passiert ist, ist, dass wir bei der zweiten Verwendung das Argument nicht zugewiesen haben nrow 2, haben wir ein Objekt nrow 2 und senden diese an das zweite Argument von matrix , die zufällig nrow ist.

Editar:

Was die bearbeiteten Fragen betrifft. Beide sind identisch. Die Verwendung von = o <- kann eine Menge Diskussionen darüber auslösen, welcher der beste ist. Viele Stilrichtlinien empfehlen <- und ich stimme dem zu, aber halten Sie den Raum frei <- Aufgaben oder sie können sehr schwer zu interpretieren sein. Wenn Sie keine Leerzeichen verwenden (sollten Sie, außer bei Twitter), bevorzuge ich = und verwenden Sie niemals -> !

Aber eigentlich ist es egal, was Sie verwenden, solange Sie bei Ihrer Wahl konsequent sind. Verwendung von = in einer Zeile und <- auf die nächste führt zu sehr hässlichem Code.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X