2016-06-23 12 views
1

Ich habe auf der Website für eine Antwort auf meine Frage gegraben, und ich bin neu mit R, also hoffe ich, dass dies sogar möglich ist. Ich habe zwei große Simulationsmatrizen (A = 100.000 x 50 und B = 10.000 x 50), die ich nach dem Zufallsprinzip elementweise nach Zeilen multiplizieren möchte.randomisierte elementweise Multiplikation in R

Grundsätzlich möchte ich jede Zeile in A zufällig eine Zeile aus B für elementweise Multiplikation auswählen.

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 

Und 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 

Gibt es ein Operator, der durch eine der Zeilen und zufällig wählen Sie eine Reihe von B zu paaren für Element weise Multiplikation gehen könnte? Für Ergebnisse etwa wie folgt:

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,] 

Vielen Dank!

Antwort

5

Versuchen Sie folgendes:

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

Ich glaube, ich muss nur erklären, was sample() tut. Bedenken Sie:

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

Ich habe nicht gesetzt Zufallskeim durch set.seed(), so, wenn Sie es ausführen, werden Sie anderes Ergebnis bekommen. Aber alles, was Sie wissen müssen, ist: Es ist zufällig.