据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