> within( list(a="a",b="b"), c="c" )
Error in eval(expr, envir, enclos) : argument is missing, with no default
> within( list(a="a",b="b"), c<-"c" )
$a
[1] "a"
$b
[1] "b"
$c
[1] "c"
Run Code Online (Sandbox Code Playgroud)
我不确定为什么这两个不应该是等价的.似乎该=版本被解释为一个名为c内部的参数因为....有没有办法禁用这种行为?我试过了,
within( list(a="a",b="b"), `c`="c" )
Run Code Online (Sandbox Code Playgroud)
但那也失败了.
你是正确的c="c"(或该形式的任何条款)被解释为提供的参数.不,没有办法禁用它 - 它可能是在R解析器级别处理的.
这种差异=和<-记录?"<-"
运算符' - '和'='分配到评估它们的环境中.运算符'< - '可以在任何地方使用,而运算符'='仅允许在顶层(例如,在命令提示符下键入的完整表达式中)或作为支撑表达式列表中的子表达式之一.
"支持表达式列表"的主要示例是函数体,您可以通过键入来验证,例如is(body(plot.default)),length(body(plot.default)).