Как исправить в R: нижний индекс выходит за пределы
Одна распространенная ошибка, с которой вы можете столкнуться в R:
Error in x[, 4] : subscript out of bounds
Эта ошибка возникает при попытке доступа к столбцу или строке несуществующей матрицы.
В этом руководстве представлены точные шаги, которые вы можете использовать для устранения этой ошибки, используя следующую матрицу в качестве примера:
#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
Пример №1: нижний индекс выходит за пределы (со строками)
Следующий код пытается получить доступ к 11-й строке матрицы, которой не существует:
#attempt to display 11th row of matrix
x[11, ]
Error in x[11, ] : subscript out of bounds
Поскольку 11-й строки матрицы не существует, мы получаем индекс ошибки выхода за границы .
Если мы не знаем, сколько строк в матрице, мы можем использовать функцию nrow() , чтобы узнать:
#display number of rows in matrix
nrow(x)
[1] 10
Мы видим, что в матрице всего 10 строк. Таким образом, мы можем использовать только числа меньше или равные 10 при доступе к строкам.
Например, мы можем использовать следующий синтаксис для отображения 10-й строки матрицы:
#display 10th row of matrix
x[10, ]
[1] 59 92 28
Пример №2: нижний индекс выходит за пределы (со столбцами)
Следующий код пытается получить доступ к 4-му столбцу несуществующей матрицы:
#attempt to display 4th column of matrix
x[, 4]
Error in x[, 4] : subscript out of bounds
Поскольку 4-й столбец матрицы не существует, мы получаем индекс ошибки выхода за границы .
Если мы не знаем, сколько столбцов в матрице, мы можем использовать функцию ncol() , чтобы узнать:
#display number of columns in matrix
ncol(x)
[1] 3
Мы видим, что в матрице всего 3 столбца. Таким образом, мы можем использовать только числа меньше или равные 3 при доступе к столбцам.
Например, мы можем использовать следующий синтаксис для отображения третьего столбца матрицы:
#display 3rd column of matrix
x[, 3]
[1] 96 44 33 35 70 86 42 38 20 28
Пример № 3: нижний индекс выходит за пределы (строки и столбцы)
Следующий код пытается получить доступ к несуществующему значению в 11-й строке и 4-м столбце матрицы:
#attempt to display value in 11th row and 4th column
x[11, 4]
Error in x[11, 4] : subscript out of bounds
Поскольку ни 11-й строки, ни 4-го столбца матрицы не существует, мы получаем нижний индекс ошибки выхода за границы .
Если мы не знаем, сколько строк и столбцов в матрице, мы можем использовать функцию dim() , чтобы узнать:
#display number of rows and columns in matrix
dim(x)
[1] 10 3
Мы видим, что в матрице всего 10 строк и 3 столбца. Таким образом, мы можем использовать только числа, меньшие или равные этим значениям, при доступе к строкам и столбцам.
Например, мы можем использовать следующий синтаксис для отображения значения в 10-й строке и 3-м столбце матрицы:
#display value in 10th row and 3rd column of matrix
x[10, 3]
[1] 28
Дополнительные ресурсы
В следующих руководствах объясняется, как устранять другие распространенные ошибки в R:
Как исправить в R: имена не совпадают с предыдущими именами
Как исправить в R: более длинная длина объекта не кратна более короткой длине объекта
Как исправить в R: контрасты могут применяться только к факторам с 2 или более уровнями