2015-10-21 24 views
0

我有這樣一個一系列功能中的一個函數調用等功能,以及傳遞參數:R:有關於他們

otherfunction<-function(x, y){ 
    if(option=="one"){ 
     z<-x+y+var 
    } 
    if(option=="two"){ 
     z<-x-y+2*var 
    } 
    return(z) 
} 

然後,它定義了需要傳遞參數的主站功能,沿與內部功能的輸出,其他內部功能的功能,以及。

master <- function(x, y, option=c("one", "two"), variable=0.1){ 
    w <- otherfunction(x,y) 
    #(or otherfunction(x,y, option, variable))  
    v <- otherfunction(w,y) 
    return(v) 
} 

我似乎陷入了「對象未找到」或「未使用的參數」錯誤。

其他人如何處理具有將從主函數調用的多個函數? 我是否需要將主函數中的參數值轉換爲對象?

這是否需要在全球環境中完成?

我是否需要在主功能中定義「其他功能」?

我是否需要使用某種「...」參數?

或者還有什麼我沒有得到?

回答

2

您的otherfunction無法查看master函數的option值。函數在它們被定義的環境中尋找變量,而不是它們被調用的地方。這應該工作

otherfunction<-function(x, y, option, var){ 
    if(option=="one"){ 
     z<-x+y+var 
    } 
    if(option=="two"){ 
     z<-x-y+2*var 
    } 
    return(z) 
} 

master <- function(x, y, option=c("one", "two"), variable=0.1){ 
    w <- otherfunction(x,y, option, variable) 
    v <- otherfunction(w,y, option, variable) 
    return(v) 
} 
master(2,2, "two") 
# [1] -1.6 

如果你想通過參數,你也可以做這樣的事情與master

master <- function(x, y, ...){ 
    w <- otherfunction(x,y, ...) 
    v <- otherfunction(w,y, ...) 
    return(v) 
} 
master(2,2, option="two", var=0.1) 
# [1] -1.6 
相關問題