Here is an alternative approach using match
that does all the swapping at once do you don't need the temp variable
swap <- match(y[,1], current)
y[which(!is.na(swap)),1] <- correct[na.omit(swap)]
which produces the same results are your code. If appears to be more efficient by this benchmark