There are some answers from 2016 here:

https://stackoverflow.com/questions/34636461/collapse-consecutive-runs-of-numbers-to-a-string-of-ranges

On 2025-02-21 7:59 p.m., Steven Ellis wrote:
Hi Dennis,

A quick Claude request:

"using r I have a sequence like:        1, 3, 4, 5, 7, 8, 12, 13, 14, 15,
20I would like to display it as:        1, 3-5, 7-8, 12-15, 20"

yielded:

condense_sequence <- function(nums) {
   if (length(nums) == 0) return("")
   if (length(nums) == 1) return(as.character(nums))

   # Sort the numbers just in case they're not in order
   nums <- sort(unique(nums))

   # Initialize variables
   ranges <- vector("character")
   start <- nums[1]
   prev <- nums[1]

   for (i in 2:length(nums)) {
     if (nums[i] != prev + 1) {
       # End of a sequence
       if (start == prev) {
         ranges <- c(ranges, as.character(start))
       } else {
         ranges <- c(ranges, paste(start, prev, sep="-"))
       }
       start <- nums[i]
     }
     prev <- nums[i]
   }

   # Handle the last number or range
   if (start == prev) {
     ranges <- c(ranges, as.character(start))
   } else {
     ranges <- c(ranges, paste(start, prev, sep="-"))
   }

   # Join all ranges with commas
   paste(ranges, collapse=", ")
}

# Your sequence
nums <- c(1, 3, 4, 5, 7, 8, 12, 13, 14, 15, 20)

# Apply the function
result <- condense_sequence(nums)
print(result)
# Output: "1, 3-5, 7-8, 12-15, 20"

Which appears to work well, though you may have other thoughts in mind /
edge cases this code does not cover.

Best,
Steven

On Fri, Feb 21, 2025 at 7:47 PM Dennis Fisher <fis...@plessthan.com> wrote:

R 4.4.0
OS X

Colleagues

I have a sequence like:
         1, 3, 4, 5, 7, 8, 12, 13, 14, 15, 20

I would like to display it as:
         1, 3-5, 7-8, 12-15, 20

Any simple ways to accomplish this?

Dennis


Dennis Fisher MD
P < (The "P Less Than" Company)
Phone / Fax: 1-866-PLessThan (1-866-753-7784)
www.PLessThan.com


         [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide
https://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide https://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

--
Dr. Benjamin Bolker
Professor, Mathematics & Statistics and Biology, McMaster University
Director, School of Computational Science and Engineering
> E-mail is sent at my convenience; I don't expect replies outside of working hours.

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide https://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to