Utilise base::split ou dplyr::group_split.
Exemple en R base, en utilisant la fonction findInterval pour créer ma variable de groupe (voir l'aide pour son fonctionnement) :
split(iris, findInterval(1:nrow(iris), vec = 1 + 10*(1:15)))
La même chose en dplyr :
group_split(iris, floor((row_number() - 1) / 10))
Là je split mon data.frame iris qui contient 150 lignes en 15 data.frames de 10 lignes chacun.