R:让一个函数调用其他函数并将参数传递给它们

时间:2015-10-21 04:49:40

标签: r function arguments environment-variables

我有一系列这样的功能:

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)
}

我似乎陷入了“未找到对象”或“未使用的参数”错误。

其他人如何处理将从主函数调用的多个函数? 我是否需要将主函数中的参数值转换为对象?

这是否需要在全球环境中完成?

我是否需要在主功能中定义“其他功能”?

我是否需要使用某种“......”参数?

或者还有其他我没有得到的东西?

1 个答案:

答案 0 :(得分:2)

您的otherfunction无法查看option功能中的master值。函数在定义它们的环境中查找变量,而不是在它们被调用的位置。这应该工作

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