A more general solution that works with all the data frame at once and where you don't have to add new factors levels is:
data.mtx <- as.matrix(data.df)
data.mtx[which(data.mtx == "old.value.to.replace")] <- "new.value"
data.df <- as.data.frame(data.mtx)
A nice feature of this code is that you can assign as many values as you have in your original data frame at once, not only one "new.value"
, and the new values can be random values. Thus you can create a complete new random data frame with the same size as the original.