【发布时间】:2013-05-19 23:10:22
【问题描述】:
我在 R 中工作,需要将参数传递给函数,以便在调用原始函数中的另一个函数时将它们用作参数。在下面的示例中,您可以看到每次调用 primaryFunc() 时我都对调用 internalFunc() 感兴趣,但第一个参数的值取决于第二个参数的存在。如果我声明“参数 2”,那么我想要一组不同的参数,而不是在函数调用中不声明“参数 2”。下面是内部函数的定义:
interiorFunc(data, resp, param1, param2)
{
if(missing(param2))
{
print(paste("Do analysis without parameter 2 on dataset of size",nrow(data),"with response",resp)
}else{
print(paste("Do analysis with parameter 2 on dataset of size",nrow(data),"with response",resp))
}
}
这是调用它的函数:
primaryFunc <- function(dataset, ...)
{
if(parameter 2 has been declared in the call to primaryFunc)
{
results <- interiorFunc(dataset, ...)
}else{
modifedData <- sample(dataset, 2*dataset, replace = TRUE)
results <- interiorFunc(modifiedData, ...)
}
return(results)
}
函数调用可以是:
interiorFuncResults <- primaryFunc(dataset, response, parameter1)
或
interiorFuncResults <- primaryFunc(dataset, response, parameter1, parameter2)
所以我需要在调用内部函数之前确定它的“parameter2”值是否已传入。这是一个内部函数()的定义,以使该示例可重现:
感谢您的帮助。
【问题讨论】:
-
就目前的问题而言,您可以简单地测试传递了多少额外参数,如
length(list(...)) -
感谢您的回复。我想我应该让我的可重现示例更加真实。 internalFunc() 实际上有很多参数(大约 10 个),大约 6 个是可选的,但只有一个具有本示例中 parameter2 的效果,其他所有参数都可以指定而不影响 primaryFunc()。
-
我认为那会是:)
标签: r function parameters parameter-passing optional-parameters