title: Why does `cut` object to my labels?
body: <p>I am trying to label values based on the range they fall into, the way you might with, say, grading assignments. So if I have a data frame of mean quiz scores, and a data frame of number values that I use as the lower cutoff for assigning grades to those means:</p>
  
  <pre><code>grades &lt;- read.table(text="Student Mean
  Adam 94
  Amanda 85.5
  James 81
  Noah 72.8333333333333
  Zach 57.5", header = TRUE)
  
  letters &lt;- read.table(text = "Letter  Cutoff
  A 90
  B 80
  C 70
  D 60
  F 0", header = TRUE)
  </code></pre>
  
  <p>I thought I would be able to use <code>cut</code> to assign a grade to each. </p>
  
  <p>I can use <code>cut</code> to bucket these out, but I'm encountering two exasperating issues:</p>
  
  <p>First, these cutoffs are the minimum, not the maximum and I don't see a way to shift that. And second, <code>cut</code> doesn't want to use the letter grades as labels. If I do this:</p>
  
  <pre><code>cut(grades$Mean, 
      breaks = letters$Cutoff,   
      labels = letters$Letter,
      right = FALSE)
  </code></pre>
  
  <p>I get an error, <code>lengths of 'breaks' and 'labels' differ</code>. Is it possible to use <code>cut</code> to assign labels to values in this way? </p>