Hoe te repareren in r: index buiten bereik


Een veel voorkomende fout die u in R kunt tegenkomen is:

 Error in x[, 4]: subscript out of bounds

Deze fout treedt op wanneer u probeert toegang te krijgen tot een kolom of rij van een matrix die niet bestaat.

In deze zelfstudie worden de exacte stappen weergegeven die u kunt nemen om deze fout op te lossen, waarbij u de volgende matrix als voorbeeld gebruikt:

 #make this example reproducible
set. seeds (0)

#create matrix with 10 rows and 3 columns
x = matrix(data = sample. int (100, 30), nrow = 10, ncol = 3)

#print matrix
print (x)

      [,1] [,2] [,3]
 [1,] 14 51 96
 [2,] 68 85 44
 [3,] 39 21 33
 [4,] 1 54 35
 [5,] 34 74 70
 [6,] 87 7 86
 [7,] 43 73 42
 [8,] 100 79 38
 [9,] 82 37 20
[10,] 59 92 28

Voorbeeld #1: index buiten bereik (met lijnen)

De volgende code probeert toegang te krijgen tot de 11e rij van de matrix, die niet bestaat:

 #attempt to display 11th row of matrix
x[11, ]

Error in x[11, ]: subscript out of bounds

Omdat de 11e rij van de matrix niet bestaat, krijgen we de fout ‚index buiten de grenzen‘ .

Als we niet weten hoeveel rijen de matrix bevat, kunnen we de functie nrow() gebruiken om erachter te komen:

 #display number of rows in matrix
nrow(x)

[1] 10

We kunnen zien dat er slechts 10 rijen in de matrix zijn. We kunnen dus alleen getallen kleiner dan of gelijk aan 10 gebruiken om toegang te krijgen tot rijen.

We kunnen bijvoorbeeld de volgende syntaxis gebruiken om de 10e rij van de matrix weer te geven:

 #display 10th row of matrix
x[10, ]

[1] 59 92 28

Voorbeeld #2: index buiten bereik (met kolommen)

De volgende code probeert toegang te krijgen tot de vierde kolom van de matrix, die niet bestaat:

 #attempt to display 4th column of matrix
x[, 4]

Error in x[, 4]: subscript out of bounds

Omdat de vierde kolom van de matrix niet bestaat, krijgen we de index buiten de grenzen- fout.

Als we niet weten hoeveel kolommen de matrix bevat, kunnen we de functie ncol() gebruiken om erachter te komen:

 #display number of columns in matrix
ncol(x)

[1] 3

We zien dat er slechts 3 kolommen in de matrix zijn. We kunnen dus alleen getallen kleiner dan of gelijk aan 3 gebruiken om toegang te krijgen tot de kolommen.

We kunnen bijvoorbeeld de volgende syntaxis gebruiken om de derde kolom van de matrix weer te geven:

 #display 3rd column of matrix
x[, 3]

[1] 96 44 33 35 70 86 42 38 20 28

Voorbeeld #3: index buiten bereik (rijen en kolommen)

De volgende code probeert toegang te krijgen tot de waarde van de 11e rij en de 4e kolom van de matrix, die niet bestaat:

 #attempt to display value in 11th row and 4th column
x[11, 4]

Error in x[11, 4]: subscript out of bounds

Omdat noch de 11e rij, noch de 4e kolom van de matrix bestaat, krijgen we de index buiten de grenzen- fout.

Als we niet weten hoeveel rijen en kolommen de matrix bevat, kunnen we de functie dim() gebruiken om erachter te komen:

 #display number of rows and columns in matrix
dim(x)

[1] 10 3

We zien dat er slechts 10 rijen en 3 kolommen in de matrix zijn. We kunnen dus alleen getallen gebruiken die kleiner zijn dan of gelijk zijn aan deze waarden bij het openen van rijen en kolommen.

We kunnen bijvoorbeeld de volgende syntaxis gebruiken om de waarde in de 10e rij en de 3e kolom van de matrix weer te geven:

 #display value in 10th row and 3rd column of matrix
x[10, 3]

[1] 28

Aanvullende bronnen

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

Oplossing in R: namen komen niet overeen met eerdere namen
Hoe op te lossen in R: de lengte van een langer object is geen veelvoud van de lengte van een korter object
Hoe op te lossen in R: contrasten kunnen alleen worden toegepast op factoren met 2 of meer niveaus

Einen Kommentar hinzufügen

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