quote函数的有效表达式

Ali*_*Ali 10 r

根据手册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'
Run Code Online (Sandbox Code Playgroud)

双方x=yx==y在语法上是有效的[R表达,不是吗?为什么quote()失败x=y

Jos*_*ich 12

正如它所说?"=":

运算符'< - '可以在任何地方使用,而运算符'='仅允许在顶层(例如,在命令提示符下键入的完整表达式中)或作为支撑表达式列表中的子表达式之一.

使用=中的参数quote没有使用它在顶层,所以你必须把它放在括号或括号,但你还是要小心你如何评价这一表达,因为上述规则仍适用.

quote({x=y})
quote((x=y))
Run Code Online (Sandbox Code Playgroud)

发表评论:

正如Gavin Simpson所说:基本上,"顶级"是指您在提示符下键入或运行代码而不在函数调用中.以z = quote(expr=x)为例. z = quote(...)在顶级评估,但expr=x不是因为它在函数调用中.

In quote(expr=x),=用于为x函数参数赋值expr; 所以你不再在顶级工作,你正在构建一个函数参数列表(pairlist).quote(x=y)失败的原因是因为quote没有x参数.

顶级上下文在第6.1节"上下文"中的R Internals中进行了简要描述.