Рандомизированное поэлементное умножение в R
Я копался на сайте в поисках ответа на мой вопрос, и я новичок в R, так что я надеюсь, что это даже возможно. У меня есть две большие матрицы симуляций (A = 100 000 x 50 и B = 10 000 x 50), которые я хотел бы случайным образом умножать поэлементно на строку.
По сути, я хотел бы, чтобы каждая строка в 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
И Б:
[,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,]
Спасибо!
1 ответ
Попробуй это:
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()
, поэтому, когда вы запустите его, вы получите другой результат. Но все, что вам нужно знать, это: это случайно.