Выражение матрицы вызывает ошибку "требует числовых/сложных матричных/векторных аргументов"?
ma=diag(3)+t(da)%*%da
код, как указано выше, и сообщение об ошибке выглядит следующим образом:
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
Может ли кто-нибудь помочь мне разобраться с ошибкой?
Благодаря
Ответы
Ответ 1
Чтобы заставить матричное умножение работать, вам нужно преобразовать data.frame(предположительно, что то, что да) в матрицу:
t(da)%*%as.matrix(da)
Но это дает матрицу 7x7, которую нельзя добавить к используемой вами тождественной матрице 3x3. Вы имеете в виду что-то вроде:
ma=diag(7)+t(da)%*%as.matrix(da)
Вы можете посмотреть Введение в R, если вы не уверены в различии между матрицей и данными. кадр.
Ответ 2
См. также это решение: https://bugs.r-project.org/bugzilla/show_bug.cgi?id=16607
Я не мог понять, что случилось с боем, поэтому я попытался запустить PCA (функция prcomp) в моем наборе данных. R продолжал говорить мне, что вход не является матрицей, хотя при проверке класса входного объекта он говорил "матрица" и режим "числовые". После перезагрузки моей IDE (архитектор в моем случае) все было в порядке с боем и с PCA.