Вот функция, которая найдет самую короткую повторяющуюся последовательность в векторе 0 и 1 с ...
find_rep <- function(x) {
head(x, which(sapply(1:(length(x) - 1),
function(z) sum(abs(x[-(1:z)] - head(x, -z)))
) == 0)[1])
}
find_rep(c(0,0,1,1,0,0,0,1,1,0,0,0))
[1] 0 0 1 1 0
find_rep(c(0,1,0,0,1,0,0,1))
[1] 0 1 0
Она сравнивает x
со смещенными версиями самой себя и возвращает самую короткую секцию дляразница равна нулю.
Затем вы можете повторить последовательность с чем-то вроде rep(y, length.out = n)
, где y
равно find_rep(x)
, а n
- количество строк в ваших данных.