據quote(expr)
手動:有效表達式到報價功能
EXPR:任何語法上有效的R的表達
雖然quote(x==y)
返回一個呼叫x==y
成功,quote(x=y)
失敗:
Error in quote(x = y) : supplied argument name 'x' does not match 'expr'
Both x=y
and x==y
是語法上有效的R表達式,不是嗎?爲什麼quote()
失敗x=y
?
據quote(expr)
手動:有效表達式到報價功能
EXPR:任何語法上有效的R的表達
雖然quote(x==y)
返回一個呼叫x==y
成功,quote(x=y)
失敗:
Error in quote(x = y) : supplied argument name 'x' does not match 'expr'
Both x=y
and x==y
是語法上有效的R表達式,不是嗎?爲什麼quote()
失敗x=y
?
正如它說在?"="
:
運算符「< - 」可以在任何地方使用,而運算符「=」是 只允許在頂部電平(例如,在完整的表達類型 在命令提示符處)或者作爲表達式列表中的一個子表達式的子表達式之一。
在參數quote
使用=
沒有使用它在頂層,所以你必須把它放在括號或括號,但你仍然有你如何評價這種表達要小心,因爲上述規則仍然適用。
quote({x=y})
quote((x=y))
爲了解決評論:
由於加文·辛普森說:基本上,「頂級」,是當你輸入或在提示符下運行的代碼,而不是一個函數調用中。以z = quote(expr=x)
爲例。 z = quote(...)
在頂層進行評估,但expr=x
不是因爲它在函數調用中。
在quote(expr=x)
,=
正被用於將x
的值賦值給函數參數expr
;所以你不再在頂層工作,你正在構造一個函數參數列表(pairlist)。 quote(x=y)
失敗的原因是因爲quote
沒有x
參數。
在R Internals的Section 1.4, Contexts中簡要描述了頂級上下文。
很好的回答!謝謝 – Ali
如果你認爲它是「一個很好的答案」,你不應該接受它嗎? –
@Jilber:沒錯!我正在等待它! – Ali