将函数参数传递给其他本身就是函数的参数 [英] Passing a function argument to other arguments which are functions themselves

查看:101
本文介绍了将函数参数传递给其他本身就是函数的参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假定我有一个外部函数,该函数具有一个数字参数和一个本身就是函数的参数(内部函数).如何将外部函数的数字参数的值作为内部函数的参数传递?考虑这个玩具示例:

Assume I have an outer function that has a numeric argument and an argument which is a function itself (inner function). How can I pass the value of the numeric argument of the outer function as an argument to the inner function? Consider this toy example:

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...

所以我想做的是在评估externalfun的参数时调用innerfun,使用对innerfun的调用中的这些externalfun参数.有什么想法或建议吗?

So what I want to do is to call innerfun at the moment the arguments of outerfun are evaluated, using those outerfun-arguments in the call to innerfun. Any ideas or suggestions?

推荐答案

我会做这样的事情:

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

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

Note that If inner function has more than one argument, it still works :

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

这篇关于将函数参数传递给其他本身就是函数的参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆