Второй аргумент для замены - это список индексов (не значений), а R использует индексирование на основе 1.0: 1 содержит только 1 действительный индекс.Таким образом,
replace(0:1, 0:1, c("a","b"))
фактически эквивалентен
replace(0:1, 1, c("a","b"))
, который генерирует предупреждающее сообщение.
Похоже, вы действительно ищете функциональность mapvalues из пакета plyr.Например,
x <- c(2,3,5,7,11)
plyr::mapvalues(x,c(3,7),c(10,12))
, который приводит к выводу:
[1] 2 10 5 12 11
mapvalues
является примером функции plyr, у которой нет прямого аналога в новом пакете dplyr,См. этот вопрос .Использование обоих пакетов одновременно не рекомендуется.Вот почему я использовал более явный plyr::mapvalues()
, а не сначала library(plyr)
, а затем просто mapvalues()
.