如何修复 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
mate2 %*% mate1
Error in mat2 %*% mat1: non-conformable arguments
我们收到错误,因为左侧矩阵中的列数 (3) 与右侧矩阵中的行数(5) 不匹配。
如何避免错误
为了避免不一致参数的错误,您必须将第一个矩阵乘以第二个矩阵:
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行和3列。
这清楚地表明,我们在相乘时必须使用左侧的第一个矩阵和右侧的第二个矩阵,因为第一个矩阵有2列,第二个矩阵有2行。
其他资源
以下教程解释了如何修复 R 中的其他常见错误: