我对基本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
?
答案 0 :(得分:8)
因此省略号用于保存您在f2
的参数中指定f1
的所有参数。虽然当您声明f2
时,仍然需要将其视为普通函数,因此请指定参数b
和c
。
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