Cómo corregir: subíndice fuera de los límites en R

Subíndice fuera de límites: Es uno de los errores más comunes que uno puede encontrar en R y tiene la siguiente forma:

Error in y[,6]: subscript out of bounds

Motivo: el compilador produce este error cuando un programador intenta acceder a una fila o columna que no existe.  

Creando una array:

Primero vamos a crear una array. Por ejemplo, hemos creado un tapete de array que tiene 5 filas y 3 columnas. Sus valores se inicializan usando la función sample.int(). Esta función se utiliza para tomar elementos aleatorios de un conjunto de datos. 

R

# Create a matrix with 5 rows and 3 columns
mat = matrix(data = sample.int(100, 30), nrow = 5, ncol = 3)
  
#print matrix
print(mat)

Producción:

Producción

Ejemplo 1: subíndice fuera de los límites (en filas):

El siguiente código intenta acceder a la sexta fila que no existe.

R

# Create a matrix with 5 rows and 3 columns
mat = matrix(data = sample.int(100, 30), nrow = 5, ncol = 3)
  
# Try to print the 6th row of matrix
mat[6, ]

Producción:

Producción

La sexta fila de la array no existe, por lo tanto, obtenemos el error de subíndice fuera de los límites. Tenga en cuenta que siempre podemos usar la función nrow() para verificar cuántas filas hay en la array:

Ejemplo:

R

# Create a matrix with 5 rows and 3 columns
mat = matrix(data = sample.int(100, 30), nrow = 5, ncol = 3)
  
# Print the number of rows in matrix
nrow(mat)

Producción:

Producción

Solo hay 5 filas en la array. Por lo tanto, podemos acceder a la columna menor o igual a 5. Ahora intentemos acceder a la tercera columna.

R

# Create a matrix with 5 rows and 3 columns
mat = matrix(data = sample.int(100, 30), nrow = 5, ncol = 3)
  
# Try to print the 5th row of the matrix
mat[5,]

Producción:

Producción

Ejemplo 2: Subíndice fuera de límites (en columnas).

El siguiente código intenta acceder a la cuarta columna que no existe.

R

# Create a matrix with 5 rows and 3 columns
mat = matrix(data = sample.int(100, 30), nrow = 5, ncol = 3)
  
# Try to print the 4th column of the matrix
mat[, 4]

Producción:

Producción

La cuarta columna de la array no existe, por lo tanto, obtenemos el error de subíndice fuera de los límites. Tenga en cuenta que siempre podemos usar la función ncol() para verificar cuántas columnas hay en la array. 

Ejemplo:

R

# Create a matrix with 5 rows and 3 columns
mat = matrix(data = sample.int(100, 30), nrow = 5, ncol = 3)
  
# Print the number of columns in the matrix
ncol(mat)

Producción:

Producción

Solo hay 3 columnas en la array. Por lo tanto, podemos acceder a la columna menor o igual a 3. Ahora intentemos acceder a la tercera columna.

Ejemplo:

R

# Create a matrix with 5 rows and 3 columns
mat = matrix(data = sample.int(100, 30), nrow = 5, ncol = 3)
  
# Try to print the 3th column of the matrix
mat[, 3]

Producción:

Producción

Ejemplo 3: subíndice fuera de los límites (tanto filas como columnas):

El siguiente código intenta acceder a la sexta fila y la cuarta columna.

R

# Create a matrix with 5 rows and 3 columns
mat = matrix(data = sample.int(100, 30), nrow = 5, ncol = 3)
  
# Try to print the 6th row and the 4th column
# of the matrix
mat[6, 4]

Producción:

Producción

La 6.ª fila y la 4.ª columna de la array no existen, por lo que obtenemos el error de subíndice fuera de los límites. Tenga en cuenta que siempre podemos usar la función dim() para verificar cuántas filas y columnas hay en la array.

R

# Create a matrix with 5 rows and 3 columns
mat = matrix(data = sample.int(100, 30), nrow = 5, ncol = 3)
  
# Print the number of rows and columns in the matrix
dim(mat)

Producción:

Producción

Solo hay 5 filas y 3 columnas en la array. Por lo tanto, podemos acceder a la fila menor o igual a 5 y la columna menor o igual a 3. Ahora intentemos acceder al valor almacenado en la quinta fila y la tercera columna.

R

# Create a matrix with 5 rows and 3 columns
mat = matrix(data = sample.int(100, 30), nrow = 5, ncol = 3)
  
# Print the number of rows and columns 
# in the matrix
mat[5,3]

Producción:

Producción

Publicación traducida automáticamente

Artículo escrito por bhuwanesh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *