【发布时间】:2015-10-07 10:46:26
【问题描述】:
我有两个矩阵 A 和 B 具有维度名称,但没有行或列名称。我想将它们相乘并继承维度名称。具体来说,我想将A(一个m乘n矩阵,行维称为“变量”,列维称为“学生”)的转置乘以B(一个m乘q矩阵,行维称为“系数”,列维度称为“模型”)得到C(一个n乘q矩阵,行维度称为“学生”,列维度称为“模型”)。下面的代码生成正确的矩阵,但没有维度名称。
A = matrix(data = c(1:5, 10*(1:5)), nrow = 2, dimnames = list("Variables" = NULL, "students" = NULL))
B = matrix(data=c(1:6), nrow = 2, dimnames = list("Coefficients" = NULL, "models" = NULL))
A
B
dim(A)
dim(B)
dimnames(A)
dimnames(B)
C = crossprod(A,B)
C
dim(C)
dimnames(C)
我希望输出(仅运行变量 C)如下所示:
Models
students [,1] [,2] [,3]
[1,] 5 11 17
[2,] 11 25 39
[3,] 25 55 85
[4,] 80 180 280
[5,] 140 320 500
【问题讨论】:
-
你能显示预期的输出吗?这两个矩阵有不同的暗名。最好知道你的期望。
-
实际上你是在
B上乘以转置的A,比较t(A) %*% B -
akrun - 好点。我添加了预期的输出。大卫阿伦伯格 - 好点。我在问题中修复了它。
-
可能一个班轮
`dimnames<-`(t(A) %*% B, setNames(list(NULL, NULL), c(names(dimnames(A))[2], names(dimnames(B))[2])))