从R中的其他矩阵中提取矩阵

时间:2013-11-21 13:09:55

标签: r

我有以下矩阵

input1 <- matrix(rnorm(600), nrow=200, ncol=3)
input2 <- matrix(rnorm(150), nrow=3, ncol=50)

input1的5列中的每一列都对应input1的5行。从此我想提取三个矩阵,output1output2output3,其中:

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类似。这样做最有效的方法是什么?

2 个答案:

答案 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]
}

(同样适用于output2output3

答案 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,因此矩阵不会强制向量。