我需要用函数参数编写一个函数,稍微修改函数并返回修改后的函数。
到目前为止我所拥有的是discriminant.functions <- function(priordist1,PC1)
{
g1 <- PC1*match.fun(priordist1)
return(g1)
}
但它不起作用 - 我在调用函数时收到以下错误消息:
discriminant.functions(function(x1,x2) 36*x1*x2*(1-x1)*(1-x2),0.5)
Error in PC1 * match.fun(priordist1) :
non-numeric argument to binary operator
我对R不太熟悉,所以我不知道是否有明显的方法可以做到这一点,看起来它应该非常简单。感谢任何帮助,非常感谢!
答案 0 :(得分:1)
match.fun
用于检查参数是否为函数,需要在此处调用函数。直接func(...)或使用do.call
这样:
## use ... for extra func arguments
discriminant.functions <-
function(func,PC1,...){
match.fun(func) ## check if func s a function
function(...) PC1* do.call(func,list(...))
}
我为*
函数测试它:
mult2 <- discriminant.functions ("*",2)
mult2(5,4)
[1] 40