> 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" )
但也失败了。
答案 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"