Як відремонтувати в r: заміна має нульову довжину


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

 Error in x[1] = x[0]: replacement has length zero

Ця помилка виникає, коли ви намагаєтеся замінити значення у векторі іншим значенням, яке «має нульову довжину», тобто воно не існує.

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

Як відтворити помилку

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

 data = c(1, 4, 5, 5, 7, 9, 12, 14, 15, 17)

Тепер припустімо, що ми спробуємо використати наступний цикл for() , щоб помножити кожне значення у векторі на значення перед ним:

 for (i in 1: length (data)) {
  data[i] = data[i] * data[i-1]
}

Error in data[i] <- data[i] * data[i - 1]: replacement has length zero

Ми отримуємо помилку « заміна має нульову довжину », тому що в першому циклі ми намагаємося виконати таке множення:

  • дані[1] * дані[0]

Оскільки індекси R починаються з 1, значення data[0] просто не існує.

Ми можемо перевірити це, спробувавши надрукувати значення, розташоване в позиції 0 у векторі:

 print (data[0])

numeric(0)

Результатом є цифровий вектор довжини 0 – іншими словами, його не існує.

Як виправити помилку

Щоб виправити цю помилку, просто використовуйте цикл for() , який не намагається отримати доступ до значення вектора, якого не існує.

У нашому прикладі ми могли б виправити цю помилку, запустивши цикл for з позиції індексу 2, а не з позиції 1:

 for (i in 2: length (data)) {
  data[i] = data[i] * data[i-1]
}

#view updated vector
data

 [1] 1 4 20 100 700 6300 75600
 [8] 1058400 15876000 269892000

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

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

У наступних посібниках пояснюється, як виправити інші типові помилки в R:

Як виправити: умова має довжину > 1 і використовуватиметься лише перший елемент
Як виправити: Replace містить X рядків, дані мають Y
Як виправити: нечисловий аргумент двійкового оператора
Як виправити: dim(X) має мати додатну довжину
Як виправити: помилка під час вибору невикористаних аргументів

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

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