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

但这也失败了。

4

2 回答 2

8

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

=和之间的这种差异<-已记录在案?"<-"

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

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

于 2013-05-13T18:49:34.777 回答
3

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

within( list(a="a",b="b"), "="(c,"c") )
# $a
# [1] "a"
#
# $b
# [1] "b"
#
# $c
# [1] "c"
于 2013-05-14T00:27:31.550 回答