web-dev-qa-db-fra.com

L'expression matricielle provoque l'erreur "nécessite des arguments matriciels / vectoriels numériques / complexes"?

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

Code R ci-dessus, message d'erreur comme suit:

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

da est une matrice, ressemble à ceci:

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

Quelqu'un pourrait-il m'aider à comprendre l'erreur?

20
user3505808

Pour que la multiplication matricielle fonctionne, vous devez convertir le data.frame (probablement c'est ce que da est) en une matrice:

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

Mais cela donne une matrice 7x7 qui ne peut pas être ajoutée à la matrice d'identité 3x3 que vous utilisez. Voulez-vous dire quelque chose comme:

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

Vous aimerez peut-être jeter un œil à An Introduction to R si vous ne vous sentez pas sûr de la différence entre une matrice et data.frame.

36
Miff