重载 R 函数 - 这是对的吗?

Overloading R function - is this right?

consumeSingleRequest <- function(api_key, URL, columnNames, globalParam="", ...) 
consumeSingleRequest <- function(api_key, URL, columnNames, valuesList, globalParam="")

我正在尝试重载这样的函数,它在第一个函数中接收多个列表并将它们组合成一个列表列表。但是,我似乎无法跳过传入 globalParam 并仅传入 ...

中的多个列表

有人知道怎么做吗?

我听说 S3 方法可以用于此目的?有人知道怎么做吗?

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="")

而supply只是在实际调用函数时提供需要的参数

consumeSingleRequest(api_key=..., valueList=...)

P.S。在 Advanced R 书中可以找到很好的解释。