0

我需要编写一个带有函数参数的函数,它会稍微修改函数并返回修改后的函数。

到目前为止我所拥有的是

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 不是很有经验,所以我不知道是否有明显的方法可以做到这一点,看起来它真的应该很简单。任何帮助表示赞赏,非常感谢!

4

1 回答 1

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
于 2013-11-02T15:52:25.740 回答