como se dice en ?"="
:
El operador '< -' se puede utilizar en cualquier lugar, mientras que el operador '=' es sólo se permite en el nivel superior (por ejemplo, en la expresión completa mecanografiado en el símbolo del sistema) o como una de las subexpresiones en una lista de expresiones reforzada .
Usando =
en una discusión a quote
no lo está utilizando en el nivel superior, así que hay que poner en llaves o paréntesis, pero todavía tiene que tener cuidado de cómo se evalúa esta expresión, ya que las reglas anteriores todavía se aplicará.
quote({x=y})
quote((x=y))
Para hacer frente a un comentario:
Como Gavin Simpson dijo: básicamente, el "nivel superior" es cuando se escribe o ejecutar el código en el indicador y no está dentro de una llamada de función. Tome z = quote(expr=x)
por ejemplo. z = quote(...)
se evalúa en el nivel superior, pero expr=x
no se debe a que esté dentro de una llamada de función.
En quote(expr=x)
, =
se utiliza para asignar el valor de x
al argumento de la función expr
; por lo que ya no trabajas en el nivel superior, estás construyendo una lista de argumentos de función (pairlist). El motivo por el que quote(x=y)
falla es porque quote
no tiene un argumento x
.
El contexto del nivel superior se describe brevemente en R Internals, en Section 1.4, Contexts.
¡Excelente respuesta! Gracias – Ali
Si lo considera como "una gran respuesta", ¿no debería aceptarlo? –
@Jilber: ¡Exactamente! ¡Lo estoy esperando! – Ali