Я пытаюсь несколько строк каждой строки каждой соответствующей строки в другой матрице из R. Я могу сделать это с помощью цикла for, но это невероятно медленно, и я пытаюсь сделать это с помощью нескольких матриц, каждый из которых составляет 1,8 миллиона строк.Множество каждой строки матрицы одной строкой другой матрицы без цикла в R
mat1 <- matrix(1:10, nrow=5, ncol=2)
mat2 <- matrix(1:5, nrow=5, ncol=2)
vect <- NA
for(i in 1:nrow(mat1)){
vect[i] <- sum(mat1[i, ] * t(mat2[i, ]))
}
vect
Это также работает, если я использую матричное умножение с вектором
for(i in 1:nrow(mat1)){
vect[i] <- mat1[i, ] %*% as.vector(t(mat2[i, ]))
}
Я попытался с помощью функции apply()
, но он пытается множественным каждую строку mat2
каждой строки mat1
и я не могу выяснить, как остановить это без петли for()
.
Скорость и эффективность памяти важны для меня в этом случае. В теории я мог бы использовать dplyr
, потому что я тяну mat1
и mat2
из dataframe, а vect
можно добавить в качестве дополнительной колонки. Опять же, я не могу понять, как это сделать быстро.