我有以下矩阵
input1 <- matrix(rnorm(600), nrow=200, ncol=3)
input2 <- matrix(rnorm(150), nrow=3, ncol=50)
input1
的5列中的每一列都对应input1
的5行。从此我想提取三个矩阵,output1
,output2
和output3
,其中:
dim(output1)
[1] 200 50
dim(output2)
[1] 200 50
dim(output3)
[1] 200 50
首先input1
第1列中的每个值乘以input2
的第1行,得到output1
。接下来,m1
第2列中的每个值乘以m2
的第2行,得到output2
。与获得output3
类似。这样做最有效的方法是什么?
答案 0 :(得分:1)
我不知道效率最高,但这是你的意思吗?
output1 <- matrix(0, nrow = dim(input1)[1], ncol = dim(input2)[2])
for(i in 1:dim(input2)[2]){
output1[,i] <- input1[,1]*input2[1,i]
}
(同样适用于output2
和output3
)
答案 1 :(得分:0)
这是普通的矢量外部产品:
output1 <- input1[,1, drop = FALSE] %*% input2[1,, drop = FALSE]
output2 <- input1[,2, drop = FALSE] %*% input2[2,, drop = FALSE]
output3 <- input1[,3, drop = FALSE] %*% input2[3,, drop = FALSE]
您需要drop = FALSE
,因此矩阵不会强制向量。