R函数:用省略号传递参数

时间:2016-11-24 21:33:51

标签: r

我对基本R的使用有疑问。之前可能会被问到,但是我无法找到问题的解决方案。

我有一个调用另一个函数的函数。使用省略号(...)传递第二个函数的参数。但是,我收到错误消息:object "OBJECT" not found

f1 <- function(a, ...) {
    print(a)
    f2(...)
}
f2 <- function(...) {
    print(b == TRUE)
    print(runif(c))
}
f1(2, b = FALSE, c = 2)

这给了我:Error in print(b == TRUE) : object 'b' not found

我知道可以使用args <- list(...)解决这个问题,然后分别调用每个参数,但我想这有很多参数(不仅仅是两个)时会变得复杂。

问题
如何使用省略号将参数从f1传递到f2

1 个答案:

答案 0 :(得分:8)

因此省略号用于保存您在f2的参数中指定f1的所有参数。虽然当您声明f2时,仍然需要将其视为普通函数,因此请指定参数bc

f1 <- function(a, ...) {
    print(a)
    f2(...)
}

# Treat f2 as a stand-alone function
f2 <- function(b, c) {
    print(b == TRUE)
    print(runif(c))
}

f1(2, b=FALSE, c=2)

[1] 2
[1] FALSE
[1] 0.351295 0.9384728