title: Collapse continuous integer runs to strings of ranges
body: <p>I have some data in a list that I need to look for continuous runs of integers (My brain think<code>rle</code> but don't know how to use it here).</p>
  
  <p>It's easier to look at the data set and explain what I'm after.</p>
  
  <p><strong>Here's the data view:</strong></p>
  
  <pre><code>$greg
   [1]  7  8  9 10 11 20 21 22 23 24 30 31 32 33 49
  
  $researcher
  [1] 42 43 44 45 46 47 48
  
  $sally
   [1] 25 26 27 28 29 37 38 39 40 41
  
  $sam
   [1]  1  2  3  4  5  6 16 17 18 19 34 35 36
  
  $teacher
  [1] 12 13 14 15
  </code></pre>
  
  <p><strong>Desired output:</strong></p>
  
  <pre><code>$greg
   [1]  7:11, 20:24, 30:33, 49
  
  $researcher
   [1] 42:48
  
  $sally
   [1] 25:29, 37:41
  
  $sam
   [1]  1:6, 16:19 34:36
  
  $teacher
   [1] 12:15
  </code></pre>
  
  <p>Use base packages how can I replace continuous span with a colon between highest and lowest and commas in between non the non continuous parts? Note that the data goes from a list of integer vectors to a list of character vectors.</p>
  
  <p><strong>MWE data:</strong></p>
  
  <pre><code>z &lt;- structure(list(greg = c(7L, 8L, 9L, 10L, 11L, 20L, 21L, 22L, 
      23L, 24L, 30L, 31L, 32L, 33L, 49L), researcher = 42:48, sally = c(25L, 
      26L, 27L, 28L, 29L, 37L, 38L, 39L, 40L, 41L), sam = c(1L, 2L, 
      3L, 4L, 5L, 6L, 16L, 17L, 18L, 19L, 34L, 35L, 36L), teacher = 12:15), .Names = c("greg", 
      "researcher", "sally", "sam", "teacher"))
  </code></pre>