16

関数 があるとしますf<- function(x,y,z) { ... }。定数を 1 つの引数に渡し、他の引数を変化させるにはどうすればよいでしょうか? 言い換えれば、私はこのようなことをしたいと思います:

 output <- outer(x,y,f(x,y,z=2)) 

このコードは評価されませんが、これを行う方法はありますか?

4

2 に答える 2

19
outer(x, y, f, z=2)

関数の後の引数は追加の引数です。 を参照...してください?outer。この構文は R では非常に一般的applyです。たとえば、ファミリ全体が同じように機能します。

アップデート:

フォローアップの質問で何を達成したいのか正確にはわかりませんが、おそらくこのフォームの解決策を使用する必要があると思います.

outer(sigma_int, theta_int, function(s,t)
    dmvnorm(y, rep(0, n), y_mat(n, lambda, t, s)))

sigma_intこれは、との値の組み合わせごとに分散行列を計算し、theta_intその行列を使用して密度を定義し、 で定義されたポイントで評価しyます。関連する変数の型と次元がわからないため、テストできませんでした。

于 2012-08-14T11:22:03.950 に答える
2

outer(関数のapplyファミリーなどとともに)それらが呼び出す関数に追加の引数を渡します。ただし、これがサポートされていない場合(一例)を扱っている場合はoptim、より一般的なカリー化のアプローチを使用できます。関数をカレーすることは、変数(の一部)が固定されているため、パラメーターが少ない新しい関数を作成することです。

library("functional")
output <- outer(x,y,Curry(f,z=2))
于 2012-08-14T16:47:51.547 に答える