2015-10-21 56 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