Jak mówi ?"="
:
Operator „< -” może być używany w dowolnym miejscu, podczas gdy operator „=” jest dozwolone tylko na najwyższym poziomie (na przykład w pełnej ekspresji wpisane w wierszu polecenia) lub jako jedno z podwyrażeń w zbrojonej liście wyrażeń .
Korzystanie =
w argument quote
nie używa go na najwyższym poziomie, więc trzeba umieścić go w nawiasach lub nawiasy, ale nadal trzeba uważać, jak ocenić to wyrażenie, od powyższych zasad nadal będzie obowiązywać.
quote({x=y})
quote((x=y))
Aby rozwiązać komentarz:
Jak Gavin Simpson powiedział: w zasadzie, „najwyższym poziomie” to po wpisaniu lub uruchomić kod w wierszu polecenia i nie jest w wywołaniu funkcji. Weźmy na przykład z = quote(expr=x)
. z = quote(...)
jest oceniany na najwyższym poziomie, ale expr=x
nie jest, ponieważ znajduje się wewnątrz wywołania funkcji.
W quote(expr=x)
, =
jest używany do przypisania wartości x
do argumentu funkcji expr
; więc nie pracujesz już na najwyższym poziomie, budujesz listę argumentów funkcji (pairlist). Przyczyną niepowodzenia jest quote(x=y)
, ponieważ quote
nie ma argumentu .
Kontekst górny jest krótko opisany w R Internals, w Section 1.4, Contexts.
Świetna odpowiedź! Dzięki – Ali
Jeśli uważasz to za "wspaniałą odpowiedź", czy nie powinieneś tego zaakceptować? –
@Jilber: Dokładnie! Czekam na to! – Ali