2016-06-23 8 views
1

私は自分の質問への回答のためにサイトを掘り下げていましたが、私はこれも可能であると考えています。私はランダムに要素ごとに行を掛けたいシミュレーションの2つの大きな行列(A = 100,000 x 50とB = 10,000 x 50)があります。ランダムな要素ごとの乗算R

本質的には、Aの各行が要素ごとの乗算のためにBからランダムに選択されるようにしたいと思います。

A:

 [,1] [,2] [,3] [,4] [,5] 
[1,] 1 1 1 1 1 
[2,] 1 1 1 1 1 
[3,] 1 1 1 1 1 
[4,] 1 1 1 1 1 
[5,] 1 1 1 1 1 
[6,] 1 1 1 1 1 
[7,] 1 1 1 1 1 
[8,] 1 1 1 1 1 
[9,] 1 1 1 1 1 
[10,] 1 1 1 1 1 

そして B:

 [,1] [,2] [,3] [,4] [,5] 
[1,] 1 1 1 1 1 
[2,] 2 2 2 2 2 
[3,] 3 3 3 3 3 
[4,] 4 4 4 4 4 
[5,] 5 5 5 5 5 

要素毎の乗算のためにペアリングするAの行を通過し、ランダムにBから行を選択することができ、オペレータがありますか?結果は次のようなものです:

C <- A&*&B 
C 
A[1,]*B[3,] 
A[2,]*B[1,] 
A[3,]*B[2,] 
A[4,]*B[5,] 
A[5,]*B[3,] 
A[6,]*B[4,] 
A[7,]*B[1,] 
A[8,]*B[5,] 
A[9,]*B[2,] 
A[10,]*B[2,] 

ありがとう!

答えて

5

これを試してみてください:

row_id <- sample(1:nrow(B), nrow(A), replace = TRUE) 
A * B[row_id, ] 

私は唯一のsample()が何をするかを説明する必要があると思います。考えてみましょう:

sample(1:5, 10, replace = TRUE) 
[1] 4 5 2 4 1 2 2 1 2 5 

私はset.seed()により乱数シードを設定しなかったので、あなたがそれを実行したとき、あなたは異なる結果を取得します。しかし、あなたが知る必要があるのは、それはランダムです。

関連する問題