我有一系列这样的功能:
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)
}
我似乎陷入了“未找到对象”或“未使用的参数”错误。
其他人如何处理将从主函数调用的多个函数? 我是否需要将主函数中的参数值转换为对象?
这是否需要在全球环境中完成?
我是否需要在主功能中定义“其他功能”?
我是否需要使用某种“......”参数?
或者还有其他我没有得到的东西?
答案 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