Как исправить в r: индекс выходит за пределы


Распространенная ошибка, с которой вы можете столкнуться в R:

 Error in x[, 4]: subscript out of bounds

Эта ошибка возникает при попытке доступа к столбцу или строке несуществующей матрицы.

В этом руководстве показаны точные шаги, которые можно предпринять для устранения этой ошибки, на примере следующей матрицы:

 #make this example reproducible
set. seeds (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 и более уровнями

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *