title: Subset dataframe by multiple logical conditions of rows to remove
body: <p>I would like to subset (filter) a dataframe by specifying which rows <em>not</em> (<code>!</code>) to keep in the new dataframe.  Here is a simplified sample dataframe:</p>
  
  <pre><code>data
  v1 v2 v3 v4
  a  v  d  c
  a  v  d  d
  b  n  p  g
  b  d  d  h    
  c  k  d  c    
  c  r  p  g
  d  v  d  x
  d  v  d  c
  e  v  d  b
  e  v  d  c
  </code></pre>
  
  <p>For example, if a row of column v1 has a "b", "d", or "e", I want to get rid of that row of observations, producing the following dataframe:</p>
  
  <pre><code>v1 v2 v3 v4
  a  v  d  c
  a  v  d  d
  c  k  d  c    
  c  r  p  g
  </code></pre>
  
  <p>I have been successful at subsetting based on one condition at a time. For example, here I remove rows where v1 contains a "b":</p>
  
  <pre><code>sub.data &lt;- data[data[ , 1] != "b", ]
  </code></pre>
  
  <p>However, I have many, many such conditions, so doing it one at a time is not desirable. I have not been successful with the following:</p>
  
  <pre><code>sub.data &lt;- data[data[ , 1] != c("b", "d", "e")
  </code></pre>
  
  <p>or</p>
  
  <pre><code>sub.data &lt;- subset(data, data[ , 1] != c("b", "d", "e"))
  </code></pre>
  
  <p>I've tried some other things as well, like <code>!%in%</code>, but that doesn't seem to exist.
  Any ideas?</p>