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


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

 Warning message:
  number of items to replace is not a multiple of replacement length

Ця помилка виникає, коли ви намагаєтеся замінити певну кількість елементів у стовпці вектора або кадру даних (припустимо, 3 елементи) на іншу кількість елементів (припустимо, 6 елементів).

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

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

Припустимо, що ми маємо наступний кадр даних у R з декількома відсутніми значеннями в першому стовпці:

 #create data frame
df <- data. frame (a=c(3, NA, 7, NA, NA, 14),
                 b=c(4, 4, 5, 12, 13, 18))

#view data frame
df

   ab
1 3 4
2 NA 4
3 7 5
4 NA 12
5 NA 13
6 14 18

Тепер припустимо, що ми спробуємо замінити відсутні значення в першому стовпці значеннями в другому стовпці:

 #attempt to replace missing values in first column with values in second column
df$a[is. na (df$a)] <- df$b

Warning message:
In df$a[is.na(df$a)] <- df$b:
  number of items to replace is not a multiple of replacement length

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

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

Найпростіший спосіб виправити цю помилку — просто використати оператор ifelse() :

 #replace missing values in column 'a' with corresponding values in column 'b'
df$a <- ifelse(is. na (df$a), df$b, df$a)

#view updated data frame
df

   ab
1 3 4
2 4 4
3 7 5
4 12 12
5 13 13
6 14 18

Цей оператор ifelse() перевіряє, чи значення стовпця «a» порожнє. Якщо так, воно замінюється відповідним значенням у стовпці “b”, інакше воно залишається без.

Ще один спосіб виправити цю помилку – просто замінити всі відсутні значення певним числом:

 #replace all missing values in column 'a' with zero
df$a[is. na (df$a)] <- 0

#view updated data frame
df

   ab
1 3 4
2 0 4
3 7 5
4 0 12
5 0 13
6 14 18

За допомогою цього методу кожне пропущене значення в стовпці «а» замінюється нулем.

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

Як виправити в R: NAs, введені примусово
Як відремонтувати в R: індекс поза межами
Як виправити в R: довжина довшого об’єкта не є кратною довжині коротшого об’єкта

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

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