Мы можем использовать split
на основе группировки, созданной путем взятия совокупной суммы первого столбца, в котором значение равно 1, в list
data.frames
lst1 <- split(df1, cumsum(df1$col1 == 1))
Теперь мы можемцикл по последовательности list
и print
for(i in seq_along(lst1)) {
cat(paste0("[*,*,", i, "]: 1 2 :="), "\n")
cat(do.call(paste, c(lst1[[i]], sep="\t", collapse="\n")), sep="\n")
}
#[*,*,1]: 1 2 :=
#1 0
#2 0
#3 0
#4 1
#[*,*,2]: 1 2 :=
#1 0
#2 0
#3 0
#4 1
#[*,*,3]: 1 2 :=
#1 0
#2 0
#3 0
#4 1
#[*,*,4]: 1 2 :=
#1 0
#2 0
#3 0
#4 1
#[*,*,5]: 1 2 :=
#1 0
#2 0
#3 0
#4 1
#[*,*,6]: 1 2 :=
#1 0
#2 1
#3 0
#4 0
data
df1 <- structure(list(col1 = c(1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L), col2 = c(0L,
0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L,
0L, 0L, 1L, 0L, 1L, 0L, 0L)), class = "data.frame", row.names = c(NA,
-24L))