多変数関数を定義し、ベクトルの要素を変数の値とするベクトルの配列に対して演算を行いたいと思います。そして、配列を関数の出力の配列で置き換えます。 2変数バージョンの場合、outer(またはouter + Vectorize)は正常に動作します。しかし、高次元では、きれいで透明なものを思いつくことはできません。Rのベクトル配列上で動作する多変数関数
2変数(2次元)の例を使用しますが、これに限定されない解決策に興味があります。
は、例えば、温度および時間のベクトルを定義し:
temp=seq(10,50,10)
time=seq(5,10,1)
これは出力30行によるの配列であるexpand.grid
arrayInput <- expand.grid(temp=seq(10,50,10), time=seq(5,10,1))
を使用してアレイを構築するために使用することができます2列。温度と時間の関数を定義できるようになりました。私は何をしたいが、それはX 2次元5 X 6の配列になるようにarrayInputを再配置し、与えられた関数の値の5 X 6の配列を生成するために、FUNCと、この配列を操作している
func <- function(temp, time) time*exp(-1/temp)
入力のペア、温度と時間。
このようなものは、Mathematicaで簡単に適用できます。私はRでこれを行ういくつかの方法を見つけましたが、それらは醜いです。変数の名前などを保持しないでください。コードが何をしているのかがはっきりしません。
誰でもこれを達成する良い方法を知っていますか?私が言ったように、もし私が5変数の関数を持っていれば、私は同じように操作を実行できるようにしたいと思います。あなたがこれを行うことができます
おかげで、
スティーブ
素晴らしい機能の1つは「外側」です。私はこれがあなたの望む出力を計算すると思っていますが、入力はちょうど初期ベクトルです: 'outer(seq(10,50,10)、seq(5,10,1)、function(temp、time)time * exp(-1/temp)) ' – lmo
ありがとう、私は最初の段落で外側を述べた、それはいいです、そして、おそらく私はこれを高次元の外側(outer())に拡張することができます。 – SteveK
誰かがここで 'multi.outer'関数でクラックを起こしました: http://stackoverflow.com/questions/6192848/how-to-generalize-outer-to-n-dimensions – SteveK