【问题标题】:R functions: passing arguments with ellipsisR函数:用省略号传递参数
【发布时间】:2016-11-24 21:33:51
【问题描述】:

我有一个关于基本 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 &lt;- list(...) 解决这个问题,然后分别调用每个参数,但我想当有很多参数(不仅仅是两个)时这会变得复杂。

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

【问题讨论】:

  • 既然您知道f2 处理哪些参数,为什么不用特定参数定义f2?另外,除了list(...)$,如果您觉得更方便,您可以访问.....1 等。

标签: r


【解决方案1】:

因此,省略号用于省去在f1 的参数中指定f2 的所有参数。虽然当你声明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

【讨论】:

    猜你喜欢
    • 2019-02-01
    • 2018-06-21
    • 2015-01-26
    • 1970-01-01
    • 2017-03-02
    • 2013-06-27
    • 2013-04-25
    • 2020-12-19
    • 2011-03-09
    相关资源
    最近更新 更多