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 に答える