R:不一致的论点

时间:2017-06-27 17:38:50

标签: r matrix-multiplication

我试图将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。我该如何用它们执行矩阵乘法?

1 个答案:

答案 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矩阵。