Як відремонтувати в 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.
Наприклад, ми можемо використати такий синтаксис, щоб відобразити 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 або більше рівнями