假设我有两个矩阵 A 和 B:
A: A1 A2 B: B1 B2
ROW1 V1 V2 ROW1 V3 V4
ROW2 V5 V6 ROW2 V7 V8
我想要一个结果矩阵 R ,它包括每对两个矩阵的列的乘积,如下所示:
R: A1_B1 A1_B2 A2_B1 A2_B2
ROW1 V1*V3 V1*V4 V2*V3 V2*V4
ROW2 V5*V7 V5*V8 V6*V7 V6*V8
循环结构可以,但我想知道是否有更好的选择。
最佳答案
您可以使用 apply
:
A <- matrix(1:4,2,2)
# [,1] [,2]
# [1,] 1 3
# [2,] 2 4
B <- A * 10
# [,1] [,2]
# [1,] 10 30
# [2,] 20 40
matrix(apply(A, 2, "*", B), nrow = nrow(A))
# [,1] [,2] [,3] [,4]
# [1,] 10 30 30 90
# [2,] 40 80 80 160
Antti 的补充:
这非常有效。最后,我需要它来操作
data.frame
。为了为该 data.frame
应用有意义的列名,我执行了以下操作:R <- as.data.frame(R)
Acol <- grep("A", names(data.frame(A)), value = T)
Bcol <- grep("B", names(data.frame(B)), value = T)
colnames(R) <- outer(Acol, Bcol, paste, sep = ".")
关于r - 将 R 中的两组向量相乘,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21901932/