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

时间:2013-05-13 18:36:43

标签: 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"

我不确定为什么这两者不应该是等价的。由于=,似乎c版本被解释为名为...的参数。有没有办法禁用这种行为?我试过了,

within( list(a="a",b="b"), `c`="c" )

但也失败了。

2 个答案:

答案 0 :(得分:8)

您是正确的c="c"(或该表单的任何子句)被解释为提供的参数。不,没有办法禁用它 - 它可能是在R解析器级别处理的。

=<-之间的差异记录为?"<-"

  

运算符'&lt; - '和'='分配到其中的环境中        他们被评估。运算符'&lt; - '可以在任何地方使用,        而运营商'='仅允许在顶层(例如,        在命令提示符下键入的完整表达式中)或作为一个表达式        括号表达式中的子表达式。

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

答案 1 :(得分:3)

Josh回答了“为什么”,但在OP的建议中,这是另一个“如何”:

within( list(a="a",b="b"), "="(c,"c") )
# $a
# [1] "a"
#
# $b
# [1] "b"
#
# $c
# [1] "c"