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
有人可以帮我弄清楚错误吗?
答案 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)