Como corrigir um erro em r: argumentos não compatíveis
Uma mensagem de erro que você pode encontrar ao usar R é:
Error in matrix2 %*% matrix1: non-conformable arguments
Este erro ocorre quando você tenta multiplicar duas matrizes, mas o número de colunas na matriz esquerda não corresponde ao número de linhas na matriz direita.
O exemplo a seguir mostra como resolver esse erro na prática.
Como reproduzir o erro
Suponha que temos as duas matrizes a seguir em 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
Agora suponha que tentamos multiplicar a segunda matriz pela primeira matriz:
#attempt to multiply second matrix by first matrix
mate2 %*% mate1
Error in mat2 %*% mat1: non-conformable arguments
Recebemos um erro porque o número de colunas (3) na matriz esquerda não corresponde ao número de linhas (5) na matriz direita.
Como evitar o erro
Para evitar o erro de argumentos não conformes , você deve multiplicar a primeira matriz pela segunda matriz:
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
Observe que somos capazes de multiplicar ambas as matrizes com êxito e sem erros porque o número de colunas (2) na matriz esquerda corresponde ao número de linhas (2) na matriz direita.
Também podemos usar a função dim() para exibir o número de colunas e linhas em cada matriz:
#view dimensions of first matrix
dim(mat1)
[1] 5 2
#view dimensions of second matrix
dim(mat2)
[1] 2 3
A partir desta saída podemos ver:
- A primeira matriz possui 5 linhas e 2 colunas.
- A segunda matriz possui 2 linhas e 3 colunas.
Isso mostra claramente que temos que usar a primeira matriz à esquerda e a segunda matriz à direita ao multiplicar, pois a primeira matriz possui 2 colunas e a segunda matriz possui 2 linhas.
Recursos adicionais
Os tutoriais a seguir explicam como corrigir outros erros comuns no R:
Como consertar em R: argumentos envolvem diferentes números de linhas
Como corrigir em R: erro na seleção de argumentos não utilizados
Como reparar em R: a substituição tem comprimento zero