Collapse continuous integer runs to strings of ranges

后端 未结 6 614
小鲜肉
小鲜肉 2020-11-30 13:50

I have some data in a list that I need to look for continuous runs of integers (My brain thinkrle but don\'t know how to use it here).

It\'s easier to l

6条回答
  •  臣服心动
    2020-11-30 14:11

    Another short solution with lapply and tapply:

    lapply(z, function(x)
      unname(tapply(x, c(0, cumsum(diff(x) != 1)), FUN = function(y) 
        paste(unique(range(y)), collapse = ":")
      ))
    )
    

    The result:

    $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"
    

提交回复
热议问题