为什么=和< - 在()中不相等?

Ari*_*man 6 r

> 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)

但那也失败了.

Jos*_*ien 8

你是正确的c="c"(或该形式的任何条款)被解释为提供的参数.不,没有办法禁用它 - 它可能是在R解析器级别处理的.

这种差异=<-记录?"<-"

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

"支持表达式列表"的主要示例是函数体,您可以通过键入来验证,例如is(body(plot.default)),length(body(plot.default)).