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

jest jak powyżej, a komunikat o błędzie jest następujący:Wyrażenie macierzy powoduje błąd "wymaga argumentów numerycznych/złożonych macierzy/wektora"?

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

da jest macierzą, wygląda następująco:

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 

Czy ktoś może mi pomóc, aby dowiedzieć się błąd?
Dzięki

+0

Czy możesz wyświetlić pełniejszy fragment kodu? Mam na myśli to, jakie są wymiary da? Czy pozycja transpozycji jest ważna? Na przykład, czy próbowałeś zepsuć problem i po prostu zrobić pierwszy da% *% t (da) lub t (da)% *% da ?? –

+0

@NathanielPayne tak, testowałem, oba nie działają, ten sam błąd. Dodaję też dane do mojego pytania. To tylko prosta matryca. – user3505808

+3

Czy możesz podać swój przykład w taki sposób, że możemy go skopiować/wkleić? Zobacz http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example jak kilka wskazówek. –

Odpowiedz

22

aby uzyskać mnożenie macierzy do pracy, trzeba przekonwertować data.frame (prawdopodobnie to, co da się) do matrycy:

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

Ale to daje macierz 7x7, która może” t należy dodać do macierzy tożsamości 3x3, której używasz. Czy masz na myśli coś takiego:

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

może chcesz spojrzeć na An Introduction to R jeśli nie czuć się pewnie o różnicy między matrycą a data.frame.

+0

Powinien prawdopodobnie dodać, że t() automatycznie konwertuje dane.frame na macierz. – Miff

0

Zobacz także tego rozwiązania: https://bugs.r-project.org/bugzilla/show_bug.cgi?id=16607

Nie mogłem dowiedzieć się, co było złego w walce, więc próbowałem uruchomić PCA (funkcja prcomp) na moim zbiorze. R ciągle mi powtarzał, że dane wejściowe nie są matrycą, mimo że podczas sprawdzania klasy obiektu wejściowego, mówiło "macierz" i tryb "numeryczny". Po ponownym uruchomieniu mojego IDE (Architekt w moim przypadku) wszystko przebiegało dobrze z walką i z PCA.

Powiązane problemy