2016-05-29 5 views
0

リストの行列乗算を行う最も効率的な方法を知りました。r:%*%とlapply/mapplyの引数を逆にした場合

A = matrix(c(1,2,3,4), ncol=2, nrow=2) 
B = list(matrix(c(1,2,3,4), ncol=2, nrow=2), matrix(c(4,3,2,1), ncol=2, nrow=2)) 

そして、私はAのcrossproductsのリストと、各要素bBの希望:

A %*% b 

私がいたが

のは、私は行列Aと行列Blistを持っているとしましょうlapply()を使用しようとしましたが、特別な入れ子なしで正しい乗算順序を確保する方法を理解できませんでした。lapply「は、それぞれbを転置するための...

lapply(B, '%*%', A) # which gives a list of b%*%A rather than A%*%b 
lapply(lapply(lapply(B, t), '%*%', t(A)), t) # gives the answer but geez... 

は、誰もが親切にここに私にいくつかのポインタを与えることができますか?

答えて

2

ちょうどそう

lapply(B, function(x) A%*%x) 
のように、 lapply()の内側にあなたの functionを定義します
関連する問題