[英]Parameter passing in R when interior function arguments are dependent on optional parameters
我正在R中工作,需要將參數傳遞給函數,以便在原始文件中調用另一個函數時可以將它們用作參數。 在下面的示例中,您可以看到我有興趣在每次調用primaryFunc()時都調用interiorFunc(),但是第一個參數的值取決於第二個參數的存在。 如果我聲明了“ parameter 2”,那么與在函數調用中未聲明“ parameter 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'值。以下是interiorFunc()的定義,以使此示例可重復:
謝謝您的幫助。
我認為常見的策略之一是過濾名稱,
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)
當然,它假定...
僅將接收全名實參。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.