come si dice nel ?"="
:
L'operatore '< -' può essere utilizzato ovunque, mentre l'operatore '=' è consentito solo al livello superiore (ad esempio, l'espressione completa digitato al prompt dei comandi) o come una delle sottoespressioni in un elenco di espressioni rinforzato .
Utilizzando =
in un argomento per quote
non lo sta utilizzando al livello più alto, quindi bisogna mettere tra parentesi o parentesi, ma si devono ancora fare attenzione a come si valuta questa espressione, dal momento che le regole di cui sopra si applicherà ancora.
quote({x=y})
quote((x=y))
Per affrontare un commento:
Come Gavin Simpson ha detto: in fondo, il "livello superiore" è quando si digita o si esegue il codice al prompt e non è all'interno di una chiamata di funzione. Prendi ad esempio z = quote(expr=x)
. z = quote(...)
viene valutato al livello superiore, ma expr=x
non è perché si trova all'interno di una chiamata di funzione.
In quote(expr=x)
, =
viene utilizzato per assegnare il valore di x
all'argomento di funzione expr
; quindi non stai più lavorando al livello più alto, stai costruendo un elenco di argomenti di funzione (pairlist). Il motivo quote(x=y)
non riesce perché quote
non ha un argomento x
.
Il contesto di primo livello è descritto brevemente in R Internals, in Section 1.4, Contexts.
fonte
2012-10-11 21:15:06
Ottima risposta! Grazie – Ali
Se la consideri come "un'ottima risposta" non dovresti accettarlo? –
@Jilber: Esattamente! Lo sto aspettando! – Ali