【发布时间】:2014-02-11 05:47:46
【问题描述】:
我有一个接受函数作为参数的函数。但是在我的函数中,我需要根据传递给它的函数创建一个变量。如何实现?
以下代码说明了这个想法(它不起作用,因为 FUN 无法与 mean 进行比较)。
myfunc <- function(x,FUN){
if(FUN==mean){y <- 1;}else{y <- 2;}
return(FUN(x+y));
}
谢谢!
【问题讨论】:
我有一个接受函数作为参数的函数。但是在我的函数中,我需要根据传递给它的函数创建一个变量。如何实现?
以下代码说明了这个想法(它不起作用,因为 FUN 无法与 mean 进行比较)。
myfunc <- function(x,FUN){
if(FUN==mean){y <- 1;}else{y <- 2;}
return(FUN(x+y));
}
谢谢!
【问题讨论】:
您的问题相当于“我如何比较函数?”。见here,答案是
myfunc <- function(x, FUN){
if (identical(FUN, mean)) y <- 1 else y <- 2
return (FUN(x+y));
}
myfunc(1, mean)
[1] 2 # = mean(1+1)
myfunc(1, sqrt)
[1] 1.732051 # = sqrt(1+2)
【讨论】: