library(readr) library(dplyr) library(purrr) data <- read_csv("input.csv") chunk_size <- 500 chunks <- split(data, ceiling(seq_along(1:nrow(data))/chunk_size)) iwalk(chunks, ~write_csv(.x, sprintf("data-%04d.csv", .y)))