R で、2 番目の関数とその引数 (その一部はベクトル) を引数として取る関数を作成しようとしています。私が望む最終的な結果は、時系列に作用する関数を呼び出すローリング関数を作成することですが、「適用」関数はすべて要素ごとにベクトル要素に関数を適用します。私が望むのは、関数をベクトル全体に適用することです。例えば、
a = c(1,2,3); b = c(4,5,6)
sapply(a,function(x,y,c) c*t(x)%*%y,b,c=2)
[,1] [,2] [,3]
[1,] 8 16 24
[2,] 10 20 30
[3,] 12 24 36
しかし、私が本当に欲しいのは:
2*t(a)%*%b
[,1]
[1,] 64
時系列に沿って関数をロールすることができます。また、2 番目の関数とそのパラメーターを引数として含むジェネリック関数を作成しようとしましたが、パラメーターを受け入れることができないようです。例えば、
foo <- function(func,parm){
return(func(parm))
}
foo(function(x,y,c) c*t(x)%*%y,parm=list(a,b,c=2))
Error in c * t(x) %*% y : 'c' is missing
ここでの問題は、func が引数のリストを受け入れないことですが、関数に引数のリストを渡すにはどうすればよいでしょうか? これがあまり混乱しないことを願っています。提供されたヘルプに感謝します。