gpt4 book ai didi

r - 当内部函数参数依赖于可选参数时,R 中的参数传递

转载 作者:行者123 更新时间:2023-12-04 10:44:13 24 4
gpt4 key购买 nike

我在 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' 值是否已经被传入。这里是 internalFunc() 的定义,使这个例子可以重现:

感谢您的帮助。

最佳答案

我认为常见的策略之一是过滤名称,

sub <- function(x, y, param=NULL, ...){
if(!is.null(param))
message(param, "is being used") else
message("not seeing it")
}

main <- function(a=1, b=2, ..., c=3){

dots <- list(...)

if("param" %in% names(dots))
sub(a, b, ...) else
sub(a, b, ...)

}

main(z=2)

main(param = 2)

当然,假设 ...只会接收完全命名的参数。

关于r - 当内部函数参数依赖于可选参数时,R 中的参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16640454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com