在R中,将函数向量传递给另一个函数,并按名称引用每个传递的函数

时间:2016-11-09 16:49:44

标签: r function substitution

我想将一组函数(列表或向量)发送到另一个函数,然后在其他函数中我想获取我发送的那些函数的名称。我也想使用这些功能,但似乎工作正常。

例如:

funcA <- function(x,y){z=x+y}
funcB <- function(x,y){z=x-y}

myfunc <- function(x,y,funclist=c(funcA, funcB)){
func1 <- deparse(substitute(funclist[1]))
}

我希望func1等于“funcA”但在这个例子中它等于“funclist [1]”。如果我用单个函数名替换列表,例如

myfunc <- function(x,y,funclist=funcA){
func1 <- deparse(substitute(funclist))
}

然后我得到func1等于“funcA”。我认为我的缺点在于对deparse(substitute())的理解,但我想知道是否还有另一种我忽视的方法。

1 个答案:

答案 0 :(得分:2)

funcA <- function(x,y){z=x+y}
funcB <- function(x,y){z=x-y}

myfunc <- function(x,y,funclist=c(funcA, funcB)){
  func.vec <- as.character(substitute(funclist))
  func1 <- func.vec[2]
  print(func1)
  func2 <- func.vec[3]
  print(func2)
}

myfunc(1,2, c(funcA,funcB))
[1] "funcA"
[1] "funcB"