title: Subset unmatched rows from data frame conditoned by values in multiple columns in a second data frame
body: <p>I would like to "extract" rows of data from a tab separated data frame (df1) where the entries only in columns 1 2 and 3 are not found in a second data frame (df2), but keeping all of the column values in df1.</p>
  
  <p>Here is a minimal example</p>
  
  <pre><code>df1
  
  chr     start       end         pvalue      S1          S2
  chr10   100028205   100028508   8.97E-01    3.0373832   3.6170213
  chr10   100227439   100227832   5.04E-14    10.6730769  2.7279813
  chr10   100992157   100992687   6.66E-03    12.6997477  17.3807599
  chr10   100993821   100994188   9.94E-01    2.4369017   2.2819886
  chr10   101089011   101090655   1.48E-07    6.6696846   9.3321407
  chr10   101190452   101190925   5.37E-01    0.9708738   0.5974608
  chr10   101279942   101280382   4.72E-03    7.2614108   11.8119266
  chr10   101281182   101282116   1.34E-01    20.0733945  22.3736969
  chr10   101282726   101282934   3.02E-01    15.7142857  19.6261682
  chr10   101287163   101287920   6.95E-01    24.543379   25.7190265
  </code></pre>
  
  <p>my actual data set will have a variety of chr numbers in "chr" and thousands more rows and a few more columns of data</p>
  
  <pre><code>df2
  
  chr     start       end         
  chr10   100227439   100227832   
  chr10   100992157   100992687   
  chr10   101089011   101090655   
  chr10   101287163   101287920   
  </code></pre>
  
  <p>Desired output:</p>
  
  <pre><code>df3
  
  chr     start       end         pvalue      S1          S2
  chr10   100028205   100028508   8.97E-01    3.0373832   3.6170213
  chr10   100993821   100994188   9.94E-01    2.4369017   2.2819886
  chr10   101190452   101190925   5.37E-01    0.9708738   0.5974608
  chr10   101279942   101280382   4.72E-03    7.2614108   11.8119266
  chr10   101281182   101282116   1.34E-01    20.0733945  22.3736969
  chr10   101282726   101282934   3.02E-01    15.7142857  19.6261682
  </code></pre>
  
  <p>I have tried a variety of commands including:</p>
  
  <pre><code>df3 &lt;- df1[!(df1[,1:3] %in% df2[,1:3])]
  </code></pre>
  
  <p>which returns all of df1</p>
  
  <pre><code>df3 &lt;- df1[!(df1$chr &amp; df1$start &amp; df1$end) %in% df2$chr &amp; df2$start &amp; df2$end]
  </code></pre>
  
  <p>errors</p>