R のエラーを修正する方法: 非準拠の引数
R の使用時に発生する可能性のあるエラー メッセージは次のとおりです。
Error in matrix2 %*% matrix1: non-conformable arguments
このエラーは、2 つの行列を乗算しようとしたときに、左側の行列の列数が右側の行列の行数と一致しない場合に発生します。
次の例は、このエラーを実際に解決する方法を示しています。
エラーを再現する方法
R に次の 2 つの行列があるとします。
#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
ここで、2 番目の行列と最初の行列を乗算しようとするとします。
#attempt to multiply second matrix by first matrix
mate2 %*% mate1
Error in mat2 %*% mat1: non-conformable arguments
左側の行列の列数 (3) が右側の行列の行数 (5) と一致しないため、エラーが発生します。
エラーを回避する方法
不適合な引数のエラーを回避するには、代わりに最初の行列と 2 番目の行列を乗算する必要があります。
multiply first matrix by second matrix
mate1 %*% mate2
[,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 番目の行列には2行3列があります。
これは、最初の行列には 2 列があり、 2番目の行列には 2 行があるため、乗算するときに左側の最初の行列と右側の2番目の行列を使用する必要があることを明確に示しています。
追加リソース
次のチュートリアルでは、R の他の一般的なエラーを修正する方法について説明します。
R での修正方法: 引数に異なる行数が含まれる
R での修正方法: 未使用の引数を選択する際のエラー
R での修復方法: 置換の長さはゼロです