我试图将2x2矩阵乘以1x2矩阵。
class(logP)
# "array"
dim(logP)
# 2 2 1
class(theta[,t-1,1])
# "numeric"
dim(theta[,t-1,1])
# NULL
length(theta[,t-1,1])
# 2
logP%*%theta[,t-1,1]
# Error in logP %*% theta[, t - 1, 1] : non-conformable arguments
logP
为2x2,而theta[,t-1,1]
为2x1。我该如何用它们执行矩阵乘法?
答案 0 :(得分:0)
主要问题是logP是一个2X2X1阵列。您应该使用drop
将其转换为矩阵。
这是一个可重复的示例,可以复制您的问题。
# the identity matrix stored as a 2X2X1 array
logP <- array(c(1, 0, 0, 1), c(2,2,1))
# some vector
theta <- 1:2
在帖子中检查对象
dim(logP)
[1] 2 2 1
dim(theta)
NULL
确保我们正确设置了单位矩阵
logP
, , 1
[,1] [,2]
[1,] 1 0
[2,] 0 1
现在,尝试乘法
logP %*% theta
logP%*%theta中的错误:不一致的参数
由于第三个维度为1,我们可以使用drop
删除它。
drop(logP) %*% theta
[,1]
[1,] 1
[2,] 2
返回我们期望的具有theta的值的2X1矩阵。