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