955 Stimmen

Was sind die Unterschiede zwischen den Zuweisungsoperatoren "=" und "<-" in R?

Was sind die Unterschiede zwischen den Zuweisungsoperatoren = y <- in R?

Ich weiß, dass die Operatoren leicht unterschiedlich sind, wie dieses Beispiel zeigt

x <- y <- 5
x = y = 5
x = y <- 5
x <- y = 5
# Error in (x <- y) = 5 : could not find function "<-<-"

Aber ist das der einzige Unterschied?

68 Stimmen

Wie bereits erwähnt aquí die Ursprünge der <- Symbol stammt von alten APL-Tastaturen, die eigentlich nur ein <- Taste auf sie.

28voto

Haim Evgi Punkte 119384

Die Betreiber <- y = in das Umfeld, in dem sie bewertet werden, einordnen. Der Operator <- kann überall verwendet werden, während der Betreiber = ist nur auf der obersten Ebene erlaubt (z. B. in dem vollständigen Ausdruck, der an der Eingabeaufforderung eingegeben wird) oder als einer der Unterausdrücke in einer geschweiften Liste von Ausdrücken.

8voto

Denis Rasulev Punkte 3156

Dies kann auch zum Verständnis des Unterschieds zwischen diesen beiden Betreibern beitragen:

df <- data.frame(
      a = rnorm(10),
      b <- rnorm(10)
)

Für das erste Element hat R Werte und einen korrekten Namen zugewiesen, während der Name des zweiten Elements etwas seltsam aussieht.

str(df)
# 'data.frame': 10 obs. of  2 variables:
#  $ a             : num  0.6393 1.125 -1.2514 0.0729 -1.3292 ...
#  $ b....rnorm.10.: num  0.2485 0.0391 -1.6532 -0.3366 1.1951 ...

R Version 3.3.2 (2016-10-31); macOS Sierra 10.12.1

2voto

Diego Punkte 320

Ich bin mir nicht sicher, ob Patrick Burns Buch "R inferno" hier zitiert wurde, wo in 8.2.26 = ist kein Synonym für <- Patrick stellt fest: "Sie sollten auf keinen Fall '<-' verwenden, wenn Sie ein Argument einer Funktion setzen wollen". Das Buch ist verfügbar unter https://www.burns-stat.com/documents/books/the-r-inferno/

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