Как исправить ошибку в R: несоответствующие аргументы


Одно сообщение об ошибке, с которым вы можете столкнуться при использовании R:

Error in matrix2 %\*% matrix1 : non-conformable arguments

Эта ошибка возникает, когда вы пытаетесь умножить две матрицы, но количество столбцов в левой матрице не соответствует количеству строк в правой матрице.

В следующем примере показано, как устранить эту ошибку на практике.

Как воспроизвести ошибку

Предположим, у нас есть следующие две матрицы в R:

#create first matrix
mat1 <- matrix(1:10, nrow= 5 ) 

mat1

 [,1] [,2]
[1,] 1 6
[2,] 2 7
[3,] 3 8
[4,] 4 9
[5,] 5 10

#create second matrix
mat2 <- matrix(1:6, nrow= 2 )

mat2

 [,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6

Теперь предположим, что мы пытаемся умножить вторую матрицу на первую матрицу:

#attempt to multiply second matrix by first matrix
mat2 %\*% mat1

Error in mat2 %\*% mat1 : non-conformable arguments

Мы получаем ошибку, потому что количество столбцов (3) в левой матрице не соответствует количеству строк (5) в правой матрице.

Как избежать ошибки

Чтобы избежать ошибки несогласованных аргументов , мы должны вместо этого умножить первую матрицу на вторую матрицу:

multiply first matrix by second matrix
mat1 %\*% mat2

 [,1] [,2] [,3]
[1,] 13 27 41
[2,] 16 34 52
[3,] 19 41 63
[4,] 22 48 74
[5,] 25 55 85

Обратите внимание, что мы можем успешно перемножить две матрицы без ошибок, потому что количество столбцов (2) в левой матрице совпадает с количеством строк (2) в правой матрице.

Мы также можем использовать функцию dim() для отображения количества столбцов и строк в каждой матрице:

#view dimensions of first matrix
dim(mat1)

[1] 5 2

#view dimensions of second matrix
dim(mat2)

[1] 2 3

Из этого вывода мы видим:

  • Первая матрица имеет 5 строк и 2 столбца.
  • Вторая матрица имеет 2 строки и 3 столбца.

Это делает очевидным, что мы должны использовать первую матрицу слева и вторую матрицу справа при умножении, поскольку первая матрица имеет 2 столбца, а вторая матрица имеет 2 строки.

Дополнительные ресурсы

В следующих руководствах объясняется, как исправить другие распространенные ошибки в R:

Как исправить в R: аргументы подразумевают разное количество строк
Как исправить в R: ошибка выбора неиспользуемых аргументов
Как исправить в R: замена имеет нулевую длину

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.