2014-06-07 14 views
8

Ich versuche, in zwei scheinbar gleichwertige Weise ausgedrückt Werte aus einem Vektor unter Verwendung von numerischen Vektoren zu extrahieren:Reihenfolge der Operator Vorrang bei der Verwendung von „:“ (Doppelpunkt)

x <- c(1,2,3) 
x[2:3] 
# [1] 2 3 
x[1+1:3] 
# [1] 2 3 NA 

Ich bin verwirrt, warum der Ausdruck x[2:3] produziert ein anderes Ergebnis als x[1+1:3] - das zweite enthält einen NA Wert am Ende. Was vermisse ich?

+0

1 + 1 = 2 (das zweite Element), 1 + 2 = 3 (das dritte Element) und 1 + 3 = 4 (das vierte Element) und dein Vektor ist nur drei Elemente lang. Es gibt kein viertes Element, also bekommst du NA. Versuche (1 + 1): 3. –

Antwort

10

Da der Betreiber : hat Vorrang vor + so 1+1:3 wirklich 1+(1:3) (i. E. 2:4) und nicht 2:3. Um die Reihenfolge der Ausführung als definierte Vorrangstellung des Operators zu ändern, verwenden Sie die Klammern ()

Sie können die Rangfolge der Operatoren in der Hilfedatei ?Syntax sehen. Hier ist der relevante Teil:

Die folgenden unären und binären Operatoren sind definiert. Sie sind in Vorranggruppen aufgeführt, von der höchsten zur niedrigsten.
::::: Zugriffs Variablen in einem Namensraum
$@ component/Schlitz Extraktion
[[[ Indexierungs
^ Potenzierung (links nach rechts)
-+ unären Minus- und Plus
: Sequenz Operator
%any% spezielle Operatoren (einschließlich %% und %/%)
*/ multiplizieren, dividieren
+- (binär) addieren, subtrahieren

Verwandte Themen