Encontre posições iniciais e finais / índices de execuções / valores consecutivos

Problema: Dado um vetor atômico, encontre os índices de início e fim das execuções no vetor.

Vetor de exemplo com execuções:

x = rev(rep(6:10, 1:5))
# [1] 10 10 10 10 10  9  9  9  9  8  8  8  7  7  6

Saída derle():

rle(x)
# Run Length Encoding
#  lengths: int [1:5] 5 4 3 2 1
#  values : int [1:5] 10 9 8 7 6

Saída desejada:

#   start end
# 1     1   5
# 2     6   9
# 3    10  12
# 4    13  14
# 5    15  15

A baserle A classe não parece fornecer essa funcionalidade, mas a classeRle e funçãorle2 Faz. No entanto, considerando a menor funcionalidade, a aderência à base R parece mais sensata do que instalar e carregar pacotes adicionais.

Existem exemplos de trechos de código (aqui, aqui eno SO), que resolvem o problema ligeiramente diferente de encontrar índices de início e de fim para execuções que satisfazem alguma condição. Eu queria algo que fosse mais geral, pudesse ser executado em uma linha e não envolvesse a atribuição de variáveis ou valores temporários.

Respondendo à minha própria pergunta porque fiquei frustrado com a falta de resultados de pesquisa. Espero que isso ajude alguém!

questionAnswers(1)

yourAnswerToTheQuestion