Como reparar em r: índice fora dos limites
Um erro comum que você pode encontrar em R é:
Error in x[, 4]: subscript out of bounds
Este erro ocorre quando você tenta acessar uma coluna ou linha de uma matriz que não existe.
Este tutorial mostra as etapas exatas que você pode seguir para resolver esse erro, usando a seguinte matriz como exemplo:
#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
Exemplo #1: índice fora do intervalo (com linhas)
O código a seguir tenta acessar a 11ª linha da matriz, que não existe:
#attempt to display 11th row of matrix
x[11, ]
Error in x[11, ]: subscript out of bounds
Como a 11ª linha da matriz não existe, obtemos o erro do índice fora dos limites .
Se não sabemos quantas linhas existem na matriz, podemos usar a função nrow() para descobrir:
#display number of rows in matrix
nrow(x)
[1] 10
Podemos ver que existem apenas 10 linhas na matriz. Portanto, só podemos usar números menores ou iguais a 10 para acessar as linhas.
Por exemplo, podemos usar a seguinte sintaxe para exibir a 10ª linha da matriz:
#display 10th row of matrix
x[10, ]
[1] 59 92 28
Exemplo #2: índice fora do intervalo (com colunas)
O código a seguir tenta acessar a 4ª coluna da matriz, que não existe:
#attempt to display 4th column of matrix
x[, 4]
Error in x[, 4]: subscript out of bounds
Como a 4ª coluna da matriz não existe, obtemos o erro do índice fora dos limites .
Se não sabemos quantas colunas a matriz contém, podemos usar a função ncol() para descobrir:
#display number of columns in matrix
ncol(x)
[1] 3
Vemos que existem apenas 3 colunas na matriz. Assim, só podemos utilizar números menores ou iguais a 3 para acessar as colunas.
Por exemplo, podemos usar a seguinte sintaxe para exibir a terceira coluna da matriz:
#display 3rd column of matrix
x[, 3]
[1] 96 44 33 35 70 86 42 38 20 28
Exemplo #3: índice fora do intervalo (linhas e colunas)
O código a seguir tenta acessar o valor da 11ª linha e 4ª coluna da matriz, que não existe:
#attempt to display value in 11th row and 4th column
x[11, 4]
Error in x[11, 4]: subscript out of bounds
Como nem a 11ª linha nem a 4ª coluna da matriz existem, obtemos o erro do índice fora dos limites .
Se não sabemos quantas linhas e colunas existem na matriz, podemos usar a função dim() para descobrir:
#display number of rows and columns in matrix
dim(x)
[1] 10 3
Vemos que existem apenas 10 linhas e 3 colunas na matriz. Assim, só podemos utilizar números menores ou iguais a esses valores no acesso a linhas e colunas.
Por exemplo, podemos usar a seguinte sintaxe para exibir o valor na 10ª linha e na 3ª coluna da matriz:
#display value in 10th row and 3rd column of matrix
x[10, 3]
[1] 28
Recursos adicionais
Os tutoriais a seguir explicam como resolver outros erros comuns em R:
Como corrigir em R: os nomes não correspondem aos nomes anteriores
Como corrigir em R: o comprimento de um objeto mais longo não é múltiplo do comprimento de um objeto mais curto
Como corrigir em R: contrastes só podem ser aplicados a fatores com 2 ou mais níveis