2012-02-01 8 views
0

もっと分かりやすいように更新: 私は自分の本と多くのサイトの両方を調べましたが、私は単に正しいキーワードを検索しなかったと確信しています。逆行列とベクトルに関数を適用しようとしています

私は、コードに表示される行列の時間ベクトル(完全な行列の乗算)を乗算する関数を作成しました。これまでのところ、それはうまく機能しています。私は私の入力関数とその引数:

m<- matrix(1:9, nrow= 3, ncol=3) 
f <- function(x,y,z) {(as.vector(y)%*%x%*%as.vector(y))*z} 
f(m,rep(1,3),2) 

この出力: [1] [1] 90

xおよびyは一定のままであるが、Zが変化するであろう。

だから私は複数の出力を得るためにベクトルを使いたい。

z<- as.vector(1,2,3) 

私はそうのような関数を適用しようとしました:

apply (c(rep(m,3),rep(1,3),rep(2,3)),1,f) 

しかし、それはエラーを生成します。

エラー:予期しない「」 『((REP(M、3)、適用』

だから私の質問は、あなたが行うことができます乗算を行列して、プロットするためのベクトルの各要素にその出力を乗算する方法であるに?

また、私は1つの答えは、単にその結果時間スカラを乗算したが、我々はそれが解決策として利用できないと仮定することができ、別の後、第1の行列の乗算を実行し、関数を作成することであることを認識しています。

事前にお手数をおかけします。

+0

あなたが望むのは不明です。「出力のベクトル」が必要ですが、入力のどの部分が変わるべきですか?あなたのエラーは、 'c(rep(...')には 'c'が欠けているだけですが、入力の一部がばかばかば' sapply'を使いたいのですが、いくつかの変数がある場合は 'mapply'を使いたいかもしれません。 –

+0

ありがとう、mappply働いた。 – user1181337

答えて

0

あなたの関数は3つの引数をとりますが、あなたがそれをfに入れるだけで適用します。関数内に引数が1つしかない場合、またはそれらが特定の値にプリセットされていても、関数にyとzがプリセットされていない場合、これは(fを使用して)機能します。

ここでもこのスニペットは何もありません。あなたは、リストなどは、私は本当にあなたがしようとしているかわからないので、あなたが

c(rep(m,3),rep(1,3),rep(2,3)) 

または

list(rep(m,3),rep(1,3),rep(2,3)) 

を必要とするだろう

(rep(m,3),rep(1,3),rep(2,3)) 

、ベクトルとして保存する必要があります私たちにあなたが期待するものの例を与えることが役に立つかもしれません。

関連する問題