【问题标题】:Matrix expression causes error "requires numeric/complex matrix/vector arguments"?矩阵表达式导致错误“需要数字/复杂矩阵/向量参数”?
【发布时间】:2014-05-19 08:45:08
【问题描述】:
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

谁能帮我找出错误?

【问题讨论】:

  • 能不能给出更完整的代码sn-p?我的意思是,da 的维度是多少?转置的位置重要吗?例如,您是否尝试过将问题分解并只做 first da %*% t(da) 或 t(da) %*% da ??
  • @NathanielPayne 是的,我测试过,两者都不起作用,同样的错误。另外,我在我的问题中添加了数据。它只是一个简单的矩阵。
  • 您能否以我们可以复制/粘贴的方式给出您的示例?请参阅stackoverflow.com/questions/5963269/… 的一些提示。
  • 我在这里第二次@RomanLuštrik。如果可以请提供创建数据的命令或将其与数据一起输入,以节省时间,我可以轻松地使用它并得到响应。
  • 你写的矩阵是da 5x6,还是什么?请按照人们的要求提供可重现的代码和数据。

标签: r matrix matrix-multiplication transpose


【解决方案1】:

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

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

但这给出了一个 7x7 矩阵,它不能添加到您正在使用的 3x3 单位矩阵中。你的意思是这样的:

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

如果您对矩阵和 data.frame 之间的区别没有信心,不妨看看 An Introduction to R

【讨论】:

【解决方案2】:

此外,如果您尝试将数据框传递给矩阵应该存在的位置,则会出现此错误。

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

      出现此错误是因为您在向量中传递了一个字符串,而作为字符串不能相乘。 矩阵(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)

      【讨论】:

        猜你喜欢
        • 2021-01-27
        • 2017-03-12
        • 2018-06-04
        • 2019-12-03
        • 2018-05-08
        • 1970-01-01
        • 2021-04-25
        • 2021-08-23
        • 1970-01-01
        相关资源
        最近更新 更多