Indexando pedaços de sequência usando data.table

Digamos que eu tenha um conjunto de dados em que as seqüências de comprimento 1 sejam ilegais, o comprimento 2 seja legal, maior que o comprimento 5 seja ilegal, mas é permitido dividir seqüências mais longas em <= 5 seqüências.

set.seed(1)
DT1 <- data.table(smp = 1, R=sample(0:1, 20000, rep=TRUE), Seq = 0L)
DT1[, smp:=1:length(smp)]
DT1[, Seq:=seq(.N), by=list(cumsum(c(0, abs(diff(R)))))]

Esta última linha vem diretamente de:Criando uma sequência em uma tabela de dados, dependendo de uma coluna

DT1[, fix_min:=ifelse((R==TRUE & Seq==1) | (R==FALSE), FALSE, TRUE)]
fixmin_idx2 <- which(DT1[, fix_min==TRUE])
DT1[fixmin_idx2 -1, fix_min:=TRUE]

Agora meus 2 legais de comprimento estão marcados corretamente. Divida os> 5s.

DT1[R==1 & Seq==6, fix_min:=FALSE]
DT1[,Seq2:=seq(.N), by=list(cumsum(c(0, abs(diff(fix_min)))))]
DT1[R==1 & Seq2==6, fix_min:=FALSE]
fixSeq2_idx7 <- which(DT1[,fix_min==TRUE] & DT1[,Seq2==7])
fixSeq2_idx7
[1] 10203 13228
DT1[fixSeq2_idx7,]
 smp R Seq fix_min Seq2
1: 10203 1  13    TRUE    7
2: 13228 1  13    TRUE    7
DT1[fixSeq2_idx7 + 1,]
 smp R Seq fix_min Seq2
1: 10204 1  14    TRUE    8
2: 13229 0   1   FALSE    1

E agora para testar se um Seq2 == 7 é seguido por um Seq2 == 8, que seria um comprimento legal de 2. Eu um 7 seguido de um 8 e um não seguido de um 8. E lá estou eu. Tudo o que tentei define todos os fix_min como TRUE ou a alternância TRUE e FALSE.

Qualquer orientação muito apreciada.

questionAnswers(1)

yourAnswerToTheQuestion