Як виправити в r: неправильна кількість індексів на матриці


Помилка, з якою ви можете зіткнутися в R:

 Error in x[i, ] <- 0: incorrect number of subscripts on matrix

Ця помилка виникає, коли ви намагаєтеся призначити значення позиції у векторі, але випадково додаєте кому, ніби ви призначаєте значення позиції рядка та стовпця в матриці.

Цей посібник пояснює, як саме виправити цю помилку.

Приклад 1: Виправлення помилки для одного значення

Припустимо, ми маємо наступний вектор у R із 5 значеннями:

 #definevector
x <- c(4, 6, 7, 7, 15)

Тепер припустімо, що ми спробуємо призначити значення «22» третьому елементу вектора:

 #attempt to assign the value '22' to element in third position
x[3, ] <- 22

Error in x[3, ] <- 22: incorrect number of subscripts on matrix

Ми отримуємо помилку, оскільки під час спроби призначити нове значення ми поставили кому.

Замість цього нам просто потрібно видалити команду:

 assign the value '22' to element in third position
x[3] <- 22

#display updated vector
x

[1] 4 6 22 7 15

Приклад 2: виправити помилку в циклі for

Ця помилка також може виникнути при спробі замінити кілька значень у векторі за допомогою циклу for.

Наприклад, наступний код намагається замінити кожне значення у векторі нулем:

 #definevector
x <- c(4, 6, 7, 7, 15)

#attempt to replace every value in vector with zero
for (i in 1:length(x)) {
    x[i, ]=0
  }

Error in x[i, ] = 0: incorrect number of subscripts on matrix

Ми отримуємо повідомлення про помилку, оскільки ми поставили кому під час спроби призначити нулі.

Замість цього нам просто потрібно видалити команду:

 #definevector
x <- c(4, 6, 7, 7, 15)

#replace every value in vector with zero
for (i in 1:length(x)) {
    x[i]=0
  }

#view updated vector
x

[1] 0 0 0 0 0

Після видалення коми код виконується без помилок.

Додаткові ресурси

Як виправити в R: NAs, введені примусово
Як відремонтувати в R: індекс поза межами
Як виправити помилку в R: неправильна кількість розмірів

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *