Hoe een fout in r op te lossen: niet-conforme argumenten


Een foutmelding die u kunt tegenkomen bij het gebruik van R is:

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

Deze fout treedt op wanneer u probeert twee matrices te vermenigvuldigen, maar het aantal kolommen in de linkermatrix komt niet overeen met het aantal rijen in de rechtermatrix.

Het volgende voorbeeld laat zien hoe u deze fout in de praktijk kunt oplossen.

Hoe de fout te reproduceren

Stel dat we de volgende twee matrices in R hebben:

 #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

Stel nu dat we proberen de tweede matrix te vermenigvuldigen met de eerste matrix:

 #attempt to multiply second matrix by first matrix
mate2 %*% mate1

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

We krijgen een foutmelding omdat het aantal kolommen (3) in de linkermatrix niet overeenkomt met het aantal rijen (5) in de rechtermatrix.

Hoe u de fout kunt vermijden

Om de fout van niet-conforme argumenten te voorkomen, moet je in plaats daarvan de eerste matrix vermenigvuldigen met de tweede matrix:

 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

Merk op dat we beide matrices met succes zonder fouten kunnen vermenigvuldigen, omdat het aantal kolommen (2) in de linkermatrix overeenkomt met het aantal rijen (2) in de rechtermatrix.

We kunnen ook de functie dim() gebruiken om het aantal kolommen en rijen in elke matrix weer te geven:

 #view dimensions of first matrix
dim(mat1)

[1] 5 2

#view dimensions of second matrix
dim(mat2)

[1] 2 3

Uit deze uitvoer kunnen we zien:

  • De eerste matrix heeft 5 rijen en 2 kolommen.
  • De tweede matrix heeft 2 rijen en 3 kolommen.

Dit laat duidelijk zien dat we bij het vermenigvuldigen de eerste matrix aan de linkerkant en de tweede matrix aan de rechterkant moeten gebruiken, aangezien de eerste matrix twee kolommen heeft en de tweede matrix twee rijen.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in R kunt oplossen:

Hoe op te lossen in R: argumenten hebben betrekking op een verschillend aantal regels
Hoe op te lossen in R: fout bij het selecteren van ongebruikte argumenten
Hoe te repareren in R: vervanging heeft een lengte van nul

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert