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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.