【发布时间】:2014-11-14 17:02:02
【问题描述】:
我正在尝试将矩阵的每一行与 R 中另一个矩阵中的每个对应行相乘。我可以使用 for 循环来执行此操作,但速度非常慢,我正在尝试使用多个矩阵来执行此操作,每个矩阵是 180 万行。
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,而vect 可以作为附加列附加。再说一次,我不知道如何快速完成。
【问题讨论】: