title: Assign value to a column from another column based on condition
body: <p>Say that I have a list like this:</p>
  
  <pre><code>&gt; desired &lt;- c("10001", "10004")
  </code></pre>
  
  <p>And a sample data frame like this:</p>
  
  <pre><code>&gt; desired_sample_df &lt;- data.frame(geo = rep("other", 30), zip = c(rep(10001:10010, 2), 10011:10020), cbsa = c(rep("NY", 20), rep("CA", 10)))
  &gt; desired_sample_df
       geo   zip cbsa
  1  other 10001   NY
  2  other 10002   NY
  3  other 10003   NY
  4  other 10004   NY
  5  other 10005   NY
  6  other 10006   NY
  7  other 10007   NY
  8  other 10008   NY
  9  other 10009   NY
  10 other 10010   NY
  11 other 10001   NY
  12 other 10002   NY
  13 other 10003   NY
  14 other 10004   NY
  15 other 10005   NY
  16 other 10006   NY
  17 other 10007   NY
  18 other 10008   NY
  19 other 10009   NY
  20 other 10010   NY
  21 other 10011   CA
  22 other 10012   CA
  23 other 10013   CA
  24 other 10014   CA
  25 other 10015   CA
  26 other 10016   CA
  27 other 10017   CA
  28 other 10018   CA
  29 other 10019   CA
  30 other 10020   CA
  </code></pre>
  
  <p>I would like to overwrite the <code>geo</code> column with a value from zip only if the value of zip is in the <code>desired</code> list saved at the start.</p>
  
  <hr>
  
  <p>Here is what I've tried:</p>
  
  <pre><code>&gt; desired_sample_df$geo[desired_sample_df$zip %in% desired] &lt;- desired_sample_df$zip[which(desired_sample_df$zip %in% desired)]
  Warning message:
  In `[&lt;-.factor`(`*tmp*`, desired_sample_df$zip %in% desired, value = c(NA,  :
    invalid factor level, NA generated
  
  
  &gt; desired_sample_df$geo[desired_sample_df$zip %in% desired] &lt;- desired_sample_df$zip
  Warning messages:
  1: In `[&lt;-.factor`(`*tmp*`, desired_sample_df$zip %in% desired, value = c(NA,  :
    invalid factor level, NA generated
  2: In `[&lt;-.factor`(`*tmp*`, desired_sample_df$zip %in% desired, value = c(NA,  :
    number of items to replace is not a multiple of replacement length
  </code></pre>