#r #for-loop #matrix-multiplication
#r #для цикла #матрица-умножение
Вопрос:
У меня есть два набора данных «A» с 2000 строками и 1000 столбцами и «B» с 5 строками и 1000 столбцами. Теперь я хочу создать третий набор данных C с 2000 строками и 5 строками. Каждая ячейка в C представляет собой линейную комбинацию из 1000 ячеек из A и 1000 ячеек из B.
A <- as.data.frame(matrix(0, nrow=2000,ncol=1000))
B <- as.data.frame(matrix(0, nrow=5,ncol=1000))
Я знаю очень простой способ создать C:
for (i in 1:2000) {
for (j in 1:5) {
C[i,j] <- A[i,1]*B[j,1] A[i,2]*B[J,2] .... A[i,1000]*B[j,1000]
}
}
Но мне придется писать очень длинный код вручную. Я прошу каких-либо указаний по гораздо более простому и читаемому коду.
Заранее большое спасибо!
Комментарии:
1.
C = as.matrix(A) %*% t(B)
?2. На самом деле вы можете показать примерные данные и ожидаемый результат, если вы использовали что-то меньше 2000. Возможно, 10×5 и 5×5 соответственно. Кроме того, хотя я приветствую программный образец данных, наличие матрицы из всех нулей не обязательно показывает какие-либо результаты из математики.
3. Большое спасибо за руководство d.b и предложения r2evans!