:) Удачи!

я есть вектор, такой какc(1, 3, 4, 5, 9, 10, 17, 29, 30) и я хотел бы сгруппировать «соседние» элементы, которые образуют регулярную последовательную последовательность в рваный вектор, что приводит к:

L1: 1
L2: 3,4,5
L3: 9,10
Л4: 17
L5: 29,30

Наивный код (бывшего программиста на C):

partition.neighbors <- function(v)
{
    result <<- list() #jagged array
    currentList <<- v[1] #current series

    for(i in 2:length(v))
    {
        if(v[i] - v [i-1] == 1)
        {
            currentList <<- c(currentList, v[i])
        }
        else
        {
            result <<- c(result, list(currentList))
            currentList <<- v[i] #next series
        }       
    }

    return(result)  
}

Теперь я понимаю, что

а) R не С (несмотря на фигурные скобки)
б) глобальные переменные - чистое зло
в) это ужасно неэффективный способ достижения результата

так что любые лучшие решения приветствуются.

Ответы на вопрос(5)

Ваш ответ на вопрос