矩阵表达式导致错误"需要数字/复杂矩阵/向量参数"?

时间:2014-04-07 08:07:08

标签: r matrix matrix-multiplication transpose

ma=diag(3)+t(da)%*%da

上面的R代码,错误信息如下:

Error in t(da) %*% da : requires numeric/complex matrix/vector arguments

da是一个矩阵,如下所示:

V45       V46          V47          V48         V49         V50          V51    
1    0.461727059  2.357732985 -1.536932071 -1.34425710  0.893541975 -0.0676913075 -0.86532231
2    0.253022555  1.524473647 -0.588911138 -1.65207275 -0.072255170 -0.5212951533 -1.43686625
3    0.824678362  1.497001189  0.335973892 -0.84027799  0.275289411 -0.2921928001 -0.16277595
4    0.854530787  2.258305198  0.107346531 -1.69194014 -0.841572928 -1.1153931009 -1.939461341
5    1.148286984 -0.232390389 -0.498465734 -0.45728816  0.352889082  0.9868844505 -0.68401129

有人可以帮我弄清楚错误吗?

4 个答案:

答案 0 :(得分:34)

要使矩阵乘法起作用,您需要将data.frame(可能就是那个da)转换为矩阵:

t(da)%*%as.matrix(da)

但这会产生一个7x7矩阵,无法添加到您正在使用的3x3单位矩阵中。你的意思是:

ma=diag(7)+t(da)%*%as.matrix(da)

如果您对矩阵和data.frame之间的差异没有信心,您可能希望查看An Introduction to R

答案 1 :(得分:0)

此外,如果尝试传递应该放置矩阵的数据框,则会出现此错误。

答案 2 :(得分:-1)

另请参阅此解决方案:https://bugs.r-project.org/bugzilla/show_bug.cgi?id=16607

我无法弄清楚战斗的问题,所以我尝试在我的数据集上运行PCA(函数prcomp)。 R一直告诉我输入不是一个矩阵,即使在检查输入对象的类时,它确实说了'' matrix'和模式'数字'。在重新启动我的IDE(在我的案例中是架构师)之后,一切都运行良好的战斗和PCA。

答案 3 :(得分:-1)

矩阵表达式导致错误“需要数字/复杂矩阵/矢量参数”吗?

之所以会发生此错误,是因为您在向量中传递了一个String且As字符串不能被乘法。 matrix(c('1','2','2','1'),nrow = 2,ncol = 2,byrow = TRUE)->> J

要更正它,请使用数字/复杂参数。 矩阵(c(1,2,2,1),nrow = 2,ncol = 2,byrow = TRUE)->> j

然后使用这个  t = j%*%t(j) //它将打印矩阵转置和矩阵的乘法。 打印(t)