ran*_*tic 3 r matrix matrix-multiplication
假设我有两个矩阵x和y,两者的尺寸都是100x2.我想创建一个列表,对于x和y的每一行,我有矩阵t(x)%*%y.例如,通过for循环:
x = matrix(rnorm(10), nrow = 5)
y = matrix(rnorm(10), nrow = 5)
myList = list()
for(i in 1:5){
myList[[i]] = t(x[i, , drop = FALSE]) %*% y[i, ]
}
Run Code Online (Sandbox Code Playgroud)
有更有效的方法来进行此计算吗?我试图找出如何表达矩阵乘法,但没有运气.我也考虑了mapply,但似乎我需要将x和y转换为向量列表而不是矩阵才能使用mapply,而且我怀疑这是正确的方法.
一种方法 Map
Map(function(x,y) matrix(x,ncol=1)%*%y ,
split(x, row(x)), split(y, row(y)))
Run Code Online (Sandbox Code Playgroud)