Разделить вектор по его последовательностям

Следующий вектор x содержит две последовательности 1:4 и 6:7 среди других несекретных цифр.

 x <- c(7, 1:4, 6:7, 9) 

Я хотел бы разделить x по его последовательностям, так что результатом будет список вроде следующего.

 # [[1]] # [1] 7 # # [[2]] # [1] 1 2 3 4 # # [[3]] # [1] 6 7 # # [[4]] # [1] 9 

Есть ли быстрый и простой способ сделать это?

я пробовал

 split(x, c(0, diff(x))) 

который приближается, но я не чувствую, что добавление 0 к разнесенному вектору – это правильный путь. Использование findInterval тоже не сработало.

 split(x, cumsum(c(TRUE, diff(x)!=1))) #$`1` #[1] 7 # #$`2` #[1] 1 2 3 4 # #$`3` #[1] 6 7 # #$`4` #[1] 9 

Просто для удовольствия вы можете использовать функцию seqle от Carl seqle из своего пакета cgwtools . (Это не будет так эффективно, как ответ Роланда).

 library(cgwtools) ## Here's what seqle does... ## It's like rle, but for sequences seqle(x) # Run Length Encoding # lengths: int [1:4] 1 4 2 1 # values : num [1:4] 7 1 6 9 y <- seqle(x) split(x, rep(seq_along(y$lengths), y$lengths)) # $`1` # [1] 7 # # $`2` # [1] 1 2 3 4 # # $`3` # [1] 6 7 # # $`4` # [1] 9 
  • Открытие всех файлов в папке и применение функции
  • Что делает функция invisible ()?
  • Возвращаемый индекс наименьшего значения в векторе?
  • Евклидово расстояние двух векторов
  • Почему я получаю «предупреждение, что длинная длина объекта не кратная короткой длине объекта»?
  • Ограниченная суммарная сумма?
  • Глобальные и локальные переменные в R
  • Какая польза от этого?
  • Какой самый полезный трюк?
  • Как увидеть исходный код функции R .Internal или .Primitive?
  • R: gsub, pattern = vector и replacement = vector
  • Interesting Posts

    Панель вкладок в ежевике без ToolBarManager

    Группа MySQL с наивысшим номером N каждого типа

    Создайте папку внутри папки документов в приложениях iOS

    Может ли gigabit ethernet Auto-negotiation обнаружить кабель Cat5 и автоматически понизить режим?

    Разница между типичным типом и подстановочным типом

    Как добавить значок перед каждым элементом в диалоговом окне предупреждения?

    Изображение изображения на экране Android Pinch Zoom

    В Windows можно вручную выбрать выход USB-усилителя?

    сервер tomcat не запускает сервер и приложение в STS

    Почему требования к ОЗУ для Visual Studio в виртуальной машине оставляют так мало для хоста, что я ожидаю, потребуется больше?

    Как перенести dataset в файл csv?

    Сколько памяти занимает мой stream java?

    Java 8 lambdas, Function.identity () или t-> t

    Как узнать, подключен ли ваш браузер к адресу Ipv4 или Ipv6 веб-сайта?

    Как использовать подстановочный шаблон в classpath для добавления нескольких банок?

    Давайте будем гением компьютера.