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)
这是非常低效的。我在大量参数上调用此函数,创建仅用于计数对象数量的列表是浪费的。返回传递给函数的参数数量的更好方法是什么?
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)
| 归档时间: |
|
| 查看次数: |
1376 次 |
| 最近记录: |