将函数参数传递给其他函数本身的参数

时间:2013-09-29 06:55:37

标签: r function arguments

假设我有一个外部函数,它有一个数字参数和一个函数本身的参数(内部函数)。如何将外部函数的numeric参数的值作为参数传递给内部函数?考虑一下这个玩具示例:

innerfun <- function(M){
 1:M
}

outerfun <- function(x, fun){
 x * fun
}

outerfun(x = 3, fun = innerfun(M = 3)) ## works
outerfun(x = 3, fun = innerfun(M = x)) ## error because innerfun can't find 'x'
outerfun(x = 3, fun = innerfun(M = get("x"))) ## doesn't work either...

所以我想做的是在外部函数的参数被评估的时候调用innerfun,在调用innerfun时使用那些outerfun-arguments。有什么想法或建议吗?

2 个答案:

答案 0 :(得分:5)

我会做这样的事情:

outerfun <- function(x, fun,...){
  x * fun(x,...)
}
innerfun <- function(M){
  seq_len(M) ## safer than 1:M
}
outerfun(x=3, innerfun)
[1] 3 6 9

请注意,如果内部函数有多个参数,它仍然有效:

innerfun2 <- function(M,Z){
  seq(M+Z)
}
outerfun(x=3, innerfun2,Z=3)
[1]  3  6  9 12 15 18

答案 1 :(得分:0)

添加“全局”变量:

param = 3;
outerfun(x = param, fun = innerfun(M = param))