R.M*_*.M. 3 arguments r ellipsis
我很困惑如何...工作.
tt = function(...) {
return(x)
}
Run Code Online (Sandbox Code Playgroud)
为什么不tt(x = 2)回来2?
相反,它失败并出现错误:
tt(x = 2)出错:找不到对象'x'
即使我x作为论点传递?
因为你所经过的一切都...留在了....您传递的未通过参数显式捕获的变量不会扩展到本地环境中.本...应该用于当前的功能并不需要与所有的互动价值,但后来的一些功能确实需要使用?他们可以沿着内部很容易地通过....它适用于像这样的场景
ss <- function(x) {
x
}
tt <- function(...) {
return(ss(...))
}
tt(x=2)
Run Code Online (Sandbox Code Playgroud)
如果您的函数需要x定义变量,那么它应该是一个参数
tt <- function(x, ...) {
return(x)
}
Run Code Online (Sandbox Code Playgroud)
如果你真的想将点扩展到当前环境中(我强烈建议你不要这样做),你可以做类似的事情
tt <- function(...) {
list2env(list(...), environment())
return(x)
}
Run Code Online (Sandbox Code Playgroud)