计算传递给函数的参数数量

Kon*_*rad 1 r function ellipsis

我有兴趣计算传递给函数的参数数量。 length不能用于此目的:

>> length(2,2,2,2,2)
Error in length(2, 2, 2, 2, 2) : 
  5 arguments passed to 'length' which requires 1
Run Code Online (Sandbox Code Playgroud)

这很明显,因为length有1个参数,所以:

length(c(2,2,2,2,2))
Run Code Online (Sandbox Code Playgroud)

会产生预期的结果-5。

我想这样调用我的函数myFunction(arg1, arg2, arg3)这可以通过使用省略号来完成:

myCount <- function(...) {length(list(...))}
Run Code Online (Sandbox Code Playgroud)

myCount 会产生预期的结果:

>> myCount(2,2,2,2,2)
[1] 5
Run Code Online (Sandbox Code Playgroud)

问题

这是非常低效的。我在大量参数上调用此函数,创建仅用于计数对象数量的列表是浪费的。返回传递给函数的参数数量的更好方法是什么?

MrF*_*ick 5

How about

myCount <- function(...) {length(match.call())-1}
Run Code Online (Sandbox Code Playgroud)

This just inspects the passed call (and removes 1 for the function name itself)