Wol*_*ker 2 arguments r function
假设我有一个外部函数,它有一个数字参数和一个函数本身的参数(内部函数).如何将外部函数的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...
Run Code Online (Sandbox Code Playgroud)
所以我想要做的是在外部函数的参数被评估时调用innerfun,在内部函数调用中使用那些outerfun-arguments.任何想法或建议?
我会做这样的事情:
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
Run Code Online (Sandbox Code Playgroud)
请注意,如果内部函数有多个参数,它仍然有效:
innerfun2 <- function(M,Z){
seq(M+Z)
}
outerfun(x=3, innerfun2,Z=3)
[1] 3 6 9 12 15 18
Run Code Online (Sandbox Code Playgroud)