Вам необходимо использовать функцию ifelse()
.
DF$ID <- ifelse(DF$INT == 1, gsub("^9", "8", DF$ID), DF$ID)
Использование dplyr
:
DF %>%
mutate(ID=ifelse(INT==1,gsub("^9","8",ID),ID))
Это будет запускать gsub
в строках, где DF$INT == 1
, и если это не 1, то он останется прежним.
Используемая вами функция if()
:
if(DF$INT == "1") { }
не предназначен для работы на data.frame
с. Функция if()
используется только , чтобы проверить, является ли что-то (например, оператор) ИСТИНА или ЛОЖЬ. Например:
if(use_new_function == "on"){
run_new_function()
}