関数がf<- function(x,y,z) { ... }
であるとします。どのように定数を1つの引数に渡すことになりますが、他の引数は変えるのですか?言い換えれば、私はこのような何かをしたいと思います:outer()を多変数関数で使用する
output <- outer(x,y,f(x,y,z=2))
このコードは評価しませんが、これを行う方法はありますか?機能後
関数がf<- function(x,y,z) { ... }
であるとします。どのように定数を1つの引数に渡すことになりますが、他の引数は変えるのですか?言い換えれば、私はこのような何かをしたいと思います:outer()を多変数関数で使用する
output <- outer(x,y,f(x,y,z=2))
このコードは評価しませんが、これを行う方法はありますか?機能後
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
の値の組み合わせごとに分散行列を計算dennsityを定義するために、その行列を使用し、y
で定義された点(S)にそれを評価します。私はそれをテストすることができませんでしたが、変数の種類と次元がわからないので、私はそれをテストすることができませんでした。
ああ、それはとてもシンプルですが、私はRについて多く知っています。 – Stijn
はい、それは簡単です...あなたがそれを知っていれば); – Backlin
もう一度お悔やみしますが、別の機能に依存している機能があればどうなりますか?たとえば、2つの区間があり、これらの区間のうち2つの要素について、(i)関連する分散行列を作成し、(ii)この時点の密度(多変量正規分布)を計算したいとします。分散行列を作成するために、私は関数y_mat(n、lambda、theta、sigma)を持っています。与えられた2つの区間sigma_intとtheta_intは、z < - outer(sigma_int、theta_int、dmvnorm、x = y、mean = rep(0、n)、sigma = y_mat(n、lambda、theta、sigma)これは可能ですか? – Stijn
outer
(適用ファンクションのファミリおよび他のものとともに)は、それらが呼び出す関数に余分な引数を渡します。ただし、これがサポートされていないケース(optim
がその一例です)では、より一般的なカレー化手法を使用することができます。関数をカレーするには、(いくつかの)変数が固定されているため、より少ないパラメータしか持たない新しい関数を作成することです。
library("functional")
output <- outer(x,y,Curry(f,z=2))
あなたは私が頻繁にdo.call(lapply、C(expand.grid(x、y)は、リスト(F))) ''でこの種のものを行ってきたが実現、何を知っているが、 「外側」はdefinatelly良く、より読みやすいです。 – Backlin