consumeSingleRequest <- function(api_key, URL, columnNames, globalParam="", ...)
consumeSingleRequest <- function(api_key, URL, columnNames, valuesList, globalParam="")
我正在尝试重载这样的函数,它在第一个函数中接受多个列表并将它们组合成一个列表列表。但是,我似乎无法跳过globalParam中的传递并传递...中的多个列表。
有谁知道怎么做?
我听说S3方法可以用于此吗?有谁知道怎么做?
答案 0 :(得分:3)
R不支持重载函数的概念。它支持具有可变数量参数的函数调用。因此,您可以声明具有任意数量参数的函数,但在实际调用函数时仅提供其中的一部分。以vector
函数为例:
> vector
function (mode = "logical", length = 0L)
.Internal(vector(mode, length))
<bytecode: 0x103b89070>
<environment: namespace:base>
它最多支持2个参数,但可以使用none或某个子集调用(在这种情况下使用默认值):
> vector()
logical(0)
> vector(mode='numeric')
numeric(0)
所以你只需要第二个声明:
consumeSingleRequest <- function(api_key, URL, columnNames, valuesList, globalParam="")
并且在实际调用函数时提供所需的参数
consumeSingleRequest(api_key=..., valueList=...)
P.S。可以在Advanced R书中找到一个很好的解释。