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:
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:
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:
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:
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:
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:
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:
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:
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:
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: