Как исправить в 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 или более уровнями