这真的属于“不要DO那!”的范围。 ,但..交叉解析功能输入参数
我写了这个看看会发生什么。
circit <-function(x=deparse(substitute(y)),y=deparse(substitute(x)))
{
return(list(x=x,y=y))
}
两个例子:
> circit()
$x
[1] "deparse(substitute(x))"
$y
[1] "deparse(substitute(y))"
> circit(3)
$x
[1] 3
$y
[1] "3"
请注意,在输出的 “x” 和 “y” 的细微交换。
我不能遵循逻辑,所以有人可以解释参数解析器如何处理这种荒谬的默认输入对吗? (第二种情况很容易遵循)
“x”评估为其中<非评估的“y”>是deparse(substitute(x))“call”结构在评估“x”时被解析。代替'deparse(substitute(x))',像'circit(,3 + pi^1.24)$ x'这样简单的调用表明“x”只是评估解析未评估的“y”调用。 –