2012-10-11 2 views
10

Laut Handbuch von quote(expr):Gültige Ausdrücke zu dem Zitat Funktion

ausdr: jeder syntaktisch gültig R Ausdruck

Während quote(x==y) kehrt einen Anruf x==y erfolgreich, quote(x=y) fehlschlägt:

Error in quote(x = y) : supplied argument name 'x' does not match 'expr' 

Beide x=y und x==y sind syntaktisch gültige R-Ausdrücke, oder? Warum schlägt quote() auf x=y fehl?

Antwort

11

Wie sagt es in ?"=":

Operator '< -' überall dort eingesetzt werden kann, während der Operator '=' ist nur auf der obersten Ebene erlaubt (zB in dem vollständigen Ausdruck eingegeben an der Eingabeaufforderung) oder als einer der Unterausdrücke in einer abgestützten Liste von Ausdrücken .

Mit = in einem Argumente zu quote benutzt es nicht auf der obersten Ebene, so müssen Sie es in Klammern oder Klammern gesetzt, aber immer noch vorsichtig sein, wie Sie diesen Ausdruck zu bewerten, da die oben genannten Regeln wird immer noch gelten.

quote({x=y}) 
quote((x=y)) 

einen Kommentar adressieren:

Wie Gavin Simpson sagte: im Grunde das „Top-Level“ ist, wenn Sie den Code an der Eingabeaufforderung eingeben oder laufen und nicht in einem Funktionsaufruf. Nehmen Sie zum Beispiel z = quote(expr=x). z = quote(...) wird auf der obersten Ebene ausgewertet, aber expr=x ist nicht, weil es in einem Funktionsaufruf ist.

quote(expr=x), = wird verwendet, um dem Funktionsargument expr den Wert x zuzuweisen; Damit Sie nicht mehr auf der obersten Ebene arbeiten, erstellen Sie eine Funktionsargumentliste (Pairlist). Der Grund quote(x=y) schlägt fehl, weil quote kein x Argument hat.

Der Kontext der obersten Ebene wird in R Internals, in Section 1.4, Contexts kurz beschrieben.

+0

Große Antwort! Danke – Ali

+0

Wenn Sie es als "eine gute Antwort" betrachten, sollten Sie es nicht akzeptieren? –

+0

@Jilber: Genau! Ich warte darauf! – Ali

Verwandte Themen