Как исправить: количество элементов для замены не кратно длине замены


Ошибка, с которой вы можете столкнуться в 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: NA, введенные по принуждению
Как исправить в R: индекс выходит за пределы
Как исправить в R: длина более длинного объекта не кратна длине более короткого объекта

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

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