【发布时间】:2019-06-23 12:23:23
【问题描述】:
设想
examplefn <- function(x = NULL, ...){str(x)}
我试图让这个函数尊重隐含的x = NULL。考虑以下几点:
对于同时使用x 和... 的呼叫,这会产生预期结果:
> examplefn(1,2)
num 1
如果使用显式 x = NULL,则行为也符合预期:
> examplefn(x = NULL,2)
NULL
但是,当尝试(并期望从函数定义中使用 x = NULL 时,我得到:
> examplefn(2)
num 2
暗示调用是按参数顺序评估的,而忽略了x = NULL 定义。
如何防止后者?
【问题讨论】:
-
x = NULL如果缺少x,则定义中的默认值。在examplefn(2)中,您基本上设置了x = 2。您希望x始终为NULL并且examplefn(2)等于examplefn(NULL,2)? -
是的,这就是目标。我显然不理解评估,但我期待未命名的
2继续代表椭圆...... -
您可能会从阅读这部分语言定义中受益(我什至建议阅读整个文档):cran.r-project.org/doc/manuals/r-release/…
标签: r function parameter-passing ellipse