title: Add extra level to factors in dataframe
body: <p>I have a data frame with numeric and ordered factor columns. I have lot of NA values, so no level is assigned to them. I changed NA to "No Answer", but levels of the factor columns don't contain that level, so here is how I started, but I don't know how to finish it in an elegant way:</p>
  
  <pre><code>addNoAnswer = function(df) {
     factorOrNot = sapply(df, is.factor)
     levelsList = lapply(df[, factorOrNot], levels)
     levelsList = lapply(levelsList, function(x) c(x, "No Answer"))
     ...
  </code></pre>
  
  <p>Is there a way to directly apply new levels to factor columns, for example, something like this:</p>
  
  <pre><code>df[, factorOrNot] = lapply(df[, factorOrNot], factor, levelsList)
  </code></pre>
  
  <p>Of course, this doesn't work correctly. </p>
  
  <p>I want the order of levels preserved and "No Answer" level added to last place.</p>