I need to recode values over multiple columns of a data frame based on another table.
I have to recode the values of multiple columns of a data table using a side table. The values correspond to geographic identifiers that I must replace with place names. So I decided to do a loop but what works outside the loop doesn't work anymore . I can't use mutate in for loop.
My real data contains 274 columns with 38 columns to recode. This columns have many different names (they aren't call places")
my main dataset :
 id <- c(1, 2, 3)
 departure <- c(1, 2, NA)
 arrival <- c(3, 1, 2)
 transit <- c(NA,NA,1)
dataset <- data.frame(id, departure, arrival, transit)
The other table :
geo_id <- c(1, 2, 3)
place_name <- c("Paris", "Nantes", "London")
geocode <- data.frame(geo_id, place_name)
My loop :
var <- c("departure", "arrival", "transit") #the columns that should by recode (must be a vector with my  real data)
for (i in var) {
  print(i)
  dataset <- dataset %>% 
  mutate(i = geocode$place_name[match(i, geocode$geo_id)])
}
mutate create a new column call i ! How to avoid this ?