【发布时间】:2017-10-16 03:39:50
【问题描述】:
我对计算传递给函数的参数数量感兴趣。 length 不能用于此目的:
>> length(2,2,2,2,2)
Error in length(2, 2, 2, 2, 2) :
5 arguments passed to 'length' which requires 1
这很明显,因为 length 需要 1 个参数,所以:
length(c(2,2,2,2,2))
会产生预期的结果 - 5。
解决方案
我想这样调用我的函数myFunction(arg1, arg2, arg3)。这可以通过使用省略号来完成:
myCount <- function(...) {length(list(...))}
myCount 会产生预期的结果:
>> myCount(2,2,2,2,2)
[1] 5
问题
这是非常低效的。我在大量参数上调用此函数并创建列表只是为了计算对象数量是浪费的。返回传递给函数的参数数量的更好方法是什么?
【问题讨论】:
-
@Gregor 公平点,我删除了第一位。
-
'用substatnial数量的参数调用'听起来你在做一些奇怪的事情。函数参数是为程序员准备的,机器应该得到太长的列表,人类无法阅读 - 例如 -
list:) -
@liborm 我同意更广泛的方案。在这种特殊情况下,我对这个解决方案很感兴趣,因为当我通过
get("sum")(arg, arg)调用函数时,它可以帮助我更改更长的工作流程。从教育的角度来看,我还想看看如何以有效的方式做到这一点。