Comment réparer dans R : indice hors limites



Une erreur courante que vous pouvez rencontrer dans R est :

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

Cette erreur se produit lorsque vous tentez d’accéder à une colonne ou une ligne d’une matrice qui n’existe pas.

Ce didacticiel présente les étapes exactes que vous pouvez suivre pour résoudre cette erreur, en utilisant la matrice suivante comme exemple :

#make this example reproducible
set.seed(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

Exemple n°1 : indice hors limites (avec lignes)

Le code suivant tente d’accéder à la 11ème ligne de la matrice, qui n’existe pas :

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

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

Puisque la 11ème ligne de la matrice n’existe pas, nous obtenons l’erreur d’indice hors limites .

Si nous ne savons pas combien de lignes il y a dans la matrice, nous pouvons utiliser la fonction nrow() pour le savoir :

#display number of rows in matrix
nrow(x)

[1] 10

Nous pouvons voir qu’il n’y a que 10 lignes dans la matrice. Ainsi, nous ne pouvons utiliser que des nombres inférieurs ou égaux à 10 pour accéder aux lignes.

Par exemple, on peut utiliser la syntaxe suivante pour afficher la 10ème ligne de la matrice :

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

[1] 59 92 28

Exemple n°2 : indice hors limites (avec colonnes)

Le code suivant tente d’accéder à la 4ème colonne de la matrice, qui n’existe pas :

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

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

Puisque la 4ème colonne de la matrice n’existe pas, nous obtenons l’erreur d’indice hors limites .

Si nous ne savons pas combien de colonnes contient la matrice, nous pouvons utiliser la fonction ncol() pour le savoir :

#display number of columns in matrix
ncol(x)

[1] 3

On voit qu’il n’y a que 3 colonnes dans la matrice. Ainsi, on ne peut utiliser que des nombres inférieurs ou égaux à 3 pour accéder aux colonnes.

Par exemple, on peut utiliser la syntaxe suivante pour afficher la 3ème colonne de la matrice :

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

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

Exemple n°3 : indice hors limites (lignes et colonnes)

Le code suivant tente d’accéder à la valeur de la 11ème ligne et de la 4ème colonne de la matrice, qui n’existe pas :

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

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

Puisque ni la 11ème ligne ni la 4ème colonne de la matrice n’existent, nous obtenons l’erreur d’indice hors limites .

Si nous ne savons pas combien de lignes et de colonnes se trouvent dans la matrice, nous pouvons utiliser la fonction dim() pour le savoir :

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

[1] 10  3

On voit qu’il n’y a que 10 lignes et 3 colonnes dans la matrice. Ainsi, nous ne pouvons utiliser que des nombres inférieurs ou égaux à ces valeurs lors de l’accès aux lignes et aux colonnes.

Par exemple, on peut utiliser la syntaxe suivante pour afficher la valeur dans la 10ème ligne et la 3ème colonne de la matrice :

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

[1] 28

Ressources additionnelles

Les didacticiels suivants expliquent comment résoudre d’autres erreurs courantes dans R :

Comment réparer dans R : les noms ne correspondent pas aux noms précédents
Comment réparer dans R : la longueur d’un objet plus longue n’est pas un multiple de la longueur d’un objet plus courte
Comment réparer dans R : les contrastes ne peuvent être appliqués qu’à des facteurs avec 2 niveaux ou plus

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *