Выражение матрицы вызывает ошибку "требует числовых/сложных матричных/векторных аргументов"?

  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.