2014-04-07 8 views
10
ma=diag(3)+t(da)%*%da 

codice è come sopra, e il messaggio di errore è la seguente:L'espressione della matrice causa l'errore "richiede argomenti di matrice/vettore numerici/complessi"?

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

da è una matrice, appare come segue:

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 

Qualcuno mi potrebbe aiutare a capire l'errore?
Grazie

+0

Puoi mostrare uno snippet di codice più completo? Cosa intendo, quali sono le dimensioni di da? La posizione della trasposizione è importante? Ad esempio, hai provato a rompere il problema e fai solo il primo da% *% t (da) o t (da)% *% da ?? –

+0

@NathanielPayne sì, ho provato, entrambi non funzionano, lo stesso errore. Inoltre, aggiungo i dati alla mia domanda. È solo una matrice semplice. – user3505808

+3

Puoi dare il tuo esempio in un modo che possiamo copiare/incollare? Vedi http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example come alcuni suggerimenti. –

risposta

22

Per ottenere risultati moltiplicazione di matrici di lavorare, è necessario convertire il data.frame (presumibilmente questo è quello che da è) ad una matrice:

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

Ma questo dà una matrice 7x7 che può' essere aggiunto alla matrice di identità 3x3 che stai usando. Vuoi dire qualcosa come:

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

È possibile, come per dare un'occhiata a An Introduction to R se non vi sentite sicuri circa la differenza tra una matrice e data.frame.

+0

Probabilmente dovrebbe aggiungere che t() converte automaticamente un data.frame in matrice. – Miff

0

Vedi anche questa soluzione: https://bugs.r-project.org/bugzilla/show_bug.cgi?id=16607

non riuscivo a capire cosa non andava con il combattimento, così ho cercato di correre PCA (funzione prcomp) sul mio set di dati. R ha continuato a dirmi che l'input non è una matrice, anche se durante il controllo della classe dell'oggetto di input, ha detto 'matrice' e modalità 'numerico'. Dopo aver riavviato il mio IDE (Architect nel mio caso), tutto andava bene con il combattimento e con PCA.

Problemi correlati