为什么我不能将这两个相同维度的矩阵相乘?

问题描述 投票:0回答:1

我正在尝试为我的 LCA 协变量概率创建一个图,如here所述。我的协变量(6 级序数变量)的概率如下:

often <- as.data.frame(cbind(V1=c(13, 11, 12, 13, 12, 14), 
                       V2=c(-0.1, -0.8, -0.2, -0.4, -0.5, -0.3)))

rownames(often) <- c("(Intercept)", "sui_thoughts_often2", "sui_thoughts_often3",
                     "sui_thoughts_often4", "sui_thoughts_often5", "sui_thoughts_often6")


often <- as.matrix(often)

代码的下一部分是将两个矩阵相乘,“经常”矩阵和创建的“pidmat”矩阵。

pidmat <- cbind(1, c(1:6))
exb <- exp(pidmat %*% often)

当我尝试执行第二行时,出现此错误:

Error in pidmat %*% often : non-conformable arguments

即使矩阵具有相同的维度?

我尝试操纵“pidmat”矩阵的维度,但无济于事,错误消息保持不变

r matrix cbind
1个回答
0
投票

因为对于矩阵点积,您需要将第一个矩阵的列数与第二个矩阵的行数相匹配。

矩阵点积的情况下,需要将

often
矩阵转置,然后相乘。这给你一个 6x6 矩阵。

exb <- exp(pidmat %*% t(often))

如果目的是进行逐元素乘法。然后这会给你一个 6x2 矩阵。

exb <- exp(pidmat * often)
© www.soinside.com 2019 - 2024. All rights reserved.